计蒜客-程序设计竞赛入门
2016-07-18 16:09
183 查看
蒜头爬楼梯
蒜头君自从春节回来以后,体重就像加了特技一样duang~duang~地暴增起来。于是小蒜头打算每天爬楼梯来燃烧体内的脂肪(咦?蒜怎么会有脂肪=.=)。蒜头在爬楼梯的时候脑洞大开,因为蒜头腿短,爬楼梯的时候一次只能迈1级或2级台阶,它就想到了,假如一共有n级台阶的话,它一共有多少种方法能够爬到楼梯顶部呢?聪明的你快来帮帮小蒜头吧~建议你使用动态规划求解哦,直接搜索是会超时的^o^
输入格式:
第一行输入一个数n(n<=50),代表楼梯的级数。输出格式:
第一行输出你的方法总数。样例输入
5样例输出
8方法
依据每次只能迈1或者2阶阶梯,所以可以讲总问题分成求最后一次迈上1阶时前面的总情况数和最后迈上2阶时前面的总情况数,所以就有dp=dp[n-1]+dp[n-2];
代码
#include <bits/stdc++.h> #include <iostream> #include <cstdio> #include <algorithm> using namespace std; int result[55]; int dp(int n) { int res; if(result >=0) return result ; if(n==0||n==1) res=1; else res=dp(n-1)+dp(n-2); result =res; return res; } int main (){ int n; scanf ("%d",&n); memset(result,-1,sizeof(result)); printf ("%d\n",dp(n)); return 0; }
相关文章推荐
- cesiumjs开发实践 (七)
- Java-IO之Apache Commons IO(1)
- unity3d中上下左右键控制移动
- Toolbar的适配方案
- test1
- 文本分词中词语词性标注说明
- JAVA中int、String的类型转换
- floodlight学习系列(1)——在Eclipse中安装运行floodlight
- 移动端JS 触摸事件基础
- Android UI线程和非UI线程
- java中HashSet详解
- leetcode_c++:链表:Intersection of Two Linked Lists(160)
- Android应用语言切换功能
- win7频繁提示资源管理器已停止工作解决办法
- NSString使用大全
- iOS移动端使用AES加密注意事项
- tomcat篇之与apache结合实现反代理(基于模块mod_jk,mod_proxy)
- cesiumjs开发实践 (六)
- Android EventBus 3.0 使用及源码解析一
- RTMPdump(libRTMP) 源代码分析 7: 建立一个流媒体连接 (NetStream部分 2)