动态规划--牛客网19校招--魔法深渊
题目描述
前几个月放映的头号玩家简直火得不能再火了,作为一个探索终极AI的研究人员,月神自然去看了此神剧。
由于太过兴奋,晚上月神做了一个奇怪的梦,月神梦见自己掉入了一个被施放了魔法的深渊,月神想要爬上此深渊。
已知深渊有N层台阶构成(1 <= N <= 1000),并且每次月神仅可往上爬2的整数次幂个台阶(1、2、4、....),请你编程告诉月神,月神有多少种方法爬出深渊
输入描述:
输入共有M行,(1<=M<=1000)第一行输入一个数M表示有多少组测试数据,接着有M行,每一行都输入一个N表示深渊的台阶数
输出描述:
输出可能的爬出深渊的方式
示例1
输入
复制
4 1 2 3 4
输出
复制
1 2 3 6
备注:
为了防止溢出,可将输出对10^9 + 3取模
如果台阶数为4,每一步可以爬1,2,4,个台阶,则dp[4]=dp[3]+dp[2]+dp[0]
同理有dp[n]=dp[n-1]+dp[n-2]+dp[n-4]+......
一、递归的方法(但是本题递归在提交时会超时,因此需采用第二种非递归的方法):
#include<stdio.h>
#include<math.h>
int Mod=1000000003;
int Fun(int n)
{
int i=0,sum=0,t,x;
if(n==1)
{
return 1;
}
if(n==0)
{
return 1;
}
if (n ==2)
{
return 2;
}
while(1)
{
t=pow(2,i);
if(n-t<0)
{
break;
}
sum+=Fun(n-t);
sum%=1000000003;
i++;
}
return sum;
}
int main()
{
int n,t,i,N;
scanf("%d",&N);
int a[N];
for(i=0;i<N;i++)
{
scanf("%d",&n);
a[i]=Fun(n);
}
for(i=0;i<N;i++)
{
printf("%d\n",a[i]);
}
}
二、非递归
#include<stdio.h>
#include<math.h>
int Mod=1000000003;
int main()
{
int n,t,i;
int dp[1000],j;
dp[0]=1;
dp[1]=1;
for(i=2;i<=1000;i++)
{
dp[i]=0;
for(j=1;j<=i;j*=2)
{
dp[i]+=dp[i-j];
dp[i]%=Mod;
}
}
int N;
scanf("%d",&N);
int a[N];
for(i=0;i<N;i++)
{
scanf("%d",&n);
a[i]=dp[n];
}
for(i=0;i<N;i++)
{
printf("%d\n",a[i]);
}
}
动态规划--牛客网19校招--魔法深渊相关推荐
- 牛客网--19校招--获得最多的奖金
题目描述 小明在越南旅游,参加了当地的娱乐活动.小明运气很好,拿到了大奖, 到了最后的拿奖金环节.小明发现桌子上放着一列红包,每个红包上写着奖金数额. 现在主持人给要求小明在这一列红包之间" ...
- 牛客网--19校招--俄罗斯方块
题目描述 小易有一个古老的游戏机,上面有着经典的游戏俄罗斯方块.因为它比较古老,所以规则和一般的俄罗斯方块不同. 荧幕上一共有 n 列,每次都会有一个 1 x 1 的方块随机落下,在同一列中,后落下的 ...
- 牛客网——2017校招真题在线编程(pythonC++)
牛客网--2017校招真题在线编程(python&C++) 1.n个数里的最小k个 题目描述 找出n个数里最小的k个 输入描述: 每个测试输入包含空格分割的n+1个整数,最后一个整数为k值,n ...
- 牛客网 2018校招真题 美团点评 K的倍数
Description 牛客网 2018校招真题 K的倍数 Solving Ideas sum[i + 1]: 表示序列p[0]...p[i]的和 从长度最大的子串开始判断,当剩余需要判断子串长度不可 ...
- 牛客网 2018校招真题 摩拜 排序次数
Description 牛客网 2018校招真题 排序次数 Solving Ideas 将数组a的元素拷贝到数组b 对数组b进行排序 对比数组b,统计数组a中已排序的元素个数 如:a = [2, 11 ...
- 牛客网 2018校招真题 滴滴出行 寻找丑数
Description 牛客网 2018校招真题 寻找丑数 Solving Ideas 参考<剑指offer>丑数 Time complexity : O(n)O(n)O(n) Space ...
- 牛客网 2018校招真题 爱奇艺 最后一位
Description 牛客网 2018校招真题 最后一位 Solving Ideas 二分查找 Solution import java.io.BufferedReader; import java ...
- 牛客网 2018校招真题 京东 回文
Description 牛客网 2018校招真题 回文 Solving Ideas 计算以str[str.length() - 1]为结尾的最大的回文长度,从而判断最少需要追加多少个字母才能使整个串成 ...
- 牛客网 2018校招真题 美团点评 关灯游戏
Description 牛客网 2018校招真题 关灯游戏 Solving Ideas 只与最右边的数字有关,如果最右边的数字为1,则Alice赢,否则Bob赢 假设最右边的数字为1 因为Alice是 ...
最新文章
- 一些有趣的三方开源库
- hibernate persist不能插入到表中
- 51nod 1600 Simplr KMP(后缀自动机+维护树上的数据结构)
- IOS 14.5版本之解档和归档的API学习
- OpenCv学习笔记(二)—cv Mat学习
- CORS跨域时axios无法获取服务器自定义的header信息 - 番外篇
- matlab 中的内联函数、匿名函数和函数函数
- matlab编制刚度矩阵,平面3节点三角形单元刚度矩阵matlab程序
- AlphaGo浅析——浅析卷积神经网络
- SAP那些事-理论篇-7-SAP的优势和劣势
- 2010新财富中国富豪榜1至100名
- Adobe Acrobat Pro DC拆分PDF
- c语言 字符串提取连续数字,c语言一串字符串中提取数字并相加的问题
- 解决spacedesk卸载/重装软件时显示 指定的账户已存在
- 广告投放的相关名词CPM/CPT/CPC/CPD/CPI/CPS
- es6 arry fill
- 喜剧院线电影《大夫我没病》在京开机
- HTML5前端视频_React视频-张晓飞-专题视频课程
- 走马观花之bug预防
- css获取时间,改变CSS 样式,获取当前日期
热门文章
- LeetCode 345. 反转字符串中的元音字母
- LeetCode 287. 寻找重复数(BitMap)
- mysql中数据定义语言_SQL数据定义语言(DDL)
- python安装scipy出现红字_windows下安装numpy,scipy遇到的问题总结
- 河北省高校计算机大赛,河北省教育厅关于举办2016年华北五省(市、自治区)及港澳台大学生计算机应用大赛河北赛区竞赛的通知...
- python抽象基类的作用_Python:多态、鸭子模型和抽象基类
- 数据分析-书籍整理(一)
- mask属性是css3的吗_使用CSS3 mask(蒙版,遮罩)属性实现超酷按钮悬停动画
- 小夕说,不了解动态空间增长的程序喵都是假喵(下)
- 美团点评容器平台HULK的调度系统