题目描述

前几个月放映的头号玩家简直火得不能再火了,作为一个探索终极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校招--魔法深渊相关推荐

  1. 牛客网--19校招--获得最多的奖金

    题目描述 小明在越南旅游,参加了当地的娱乐活动.小明运气很好,拿到了大奖, 到了最后的拿奖金环节.小明发现桌子上放着一列红包,每个红包上写着奖金数额. 现在主持人给要求小明在这一列红包之间" ...

  2. 牛客网--19校招--俄罗斯方块

    题目描述 小易有一个古老的游戏机,上面有着经典的游戏俄罗斯方块.因为它比较古老,所以规则和一般的俄罗斯方块不同. 荧幕上一共有 n 列,每次都会有一个 1 x 1 的方块随机落下,在同一列中,后落下的 ...

  3. 牛客网——2017校招真题在线编程(pythonC++)

    牛客网--2017校招真题在线编程(python&C++) 1.n个数里的最小k个 题目描述 找出n个数里最小的k个 输入描述: 每个测试输入包含空格分割的n+1个整数,最后一个整数为k值,n ...

  4. 牛客网 2018校招真题 美团点评 K的倍数

    Description 牛客网 2018校招真题 K的倍数 Solving Ideas sum[i + 1]: 表示序列p[0]...p[i]的和 从长度最大的子串开始判断,当剩余需要判断子串长度不可 ...

  5. 牛客网 2018校招真题 摩拜 排序次数

    Description 牛客网 2018校招真题 排序次数 Solving Ideas 将数组a的元素拷贝到数组b 对数组b进行排序 对比数组b,统计数组a中已排序的元素个数 如:a = [2, 11 ...

  6. 牛客网 2018校招真题 滴滴出行 寻找丑数

    Description 牛客网 2018校招真题 寻找丑数 Solving Ideas 参考<剑指offer>丑数 Time complexity : O(n)O(n)O(n) Space ...

  7. 牛客网 2018校招真题 爱奇艺 最后一位

    Description 牛客网 2018校招真题 最后一位 Solving Ideas 二分查找 Solution import java.io.BufferedReader; import java ...

  8. 牛客网 2018校招真题 京东 回文

    Description 牛客网 2018校招真题 回文 Solving Ideas 计算以str[str.length() - 1]为结尾的最大的回文长度,从而判断最少需要追加多少个字母才能使整个串成 ...

  9. 牛客网 2018校招真题 美团点评 关灯游戏

    Description 牛客网 2018校招真题 关灯游戏 Solving Ideas 只与最右边的数字有关,如果最右边的数字为1,则Alice赢,否则Bob赢 假设最右边的数字为1 因为Alice是 ...

最新文章

  1. 一些有趣的三方开源库
  2. hibernate persist不能插入到表中
  3. 51nod 1600 Simplr KMP(后缀自动机+维护树上的数据结构)
  4. IOS 14.5版本之解档和归档的API学习
  5. OpenCv学习笔记(二)—cv Mat学习
  6. CORS跨域时axios无法获取服务器自定义的header信息 - 番外篇
  7. matlab 中的内联函数、匿名函数和函数函数
  8. matlab编制刚度矩阵,平面3节点三角形单元刚度矩阵matlab程序
  9. AlphaGo浅析——浅析卷积神经网络
  10. SAP那些事-理论篇-7-SAP的优势和劣势
  11. 2010新财富中国富豪榜1至100名
  12. Adobe Acrobat Pro DC拆分PDF
  13. c语言 字符串提取连续数字,c语言一串字符串中提取数字并相加的问题
  14. 解决spacedesk卸载/重装软件时显示 指定的账户已存在
  15. 广告投放的相关名词CPM/CPT/CPC/CPD/CPI/CPS
  16. es6 arry fill
  17. 喜剧院线电影《大夫我没病》在京开机
  18. HTML5前端视频_React视频-张晓飞-专题视频课程
  19. 走马观花之bug预防
  20. css获取时间,改变CSS 样式,获取当前日期

热门文章

  1. LeetCode 345. 反转字符串中的元音字母
  2. LeetCode 287. 寻找重复数(BitMap)
  3. mysql中数据定义语言_SQL数据定义语言(DDL)
  4. python安装scipy出现红字_windows下安装numpy,scipy遇到的问题总结
  5. 河北省高校计算机大赛,河北省教育厅关于举办2016年华北五省(市、自治区)及港澳台大学生计算机应用大赛河北赛区竞赛的通知...
  6. python抽象基类的作用_Python:多态、鸭子模型和抽象基类
  7. 数据分析-书籍整理(一)
  8. mask属性是css3的吗_使用CSS3 mask(蒙版,遮罩)属性实现超酷按钮悬停动画
  9. 小夕说,不了解动态空间增长的程序喵都是假喵(下)
  10. 美团点评容器平台HULK的调度系统