Leetcode | Climbing Stairs
2015-10-08 22:50
489 查看
// 题目: // 假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部? #include <iostream> using namespace std; // 思路: // 利用DP的方法,一个台阶的方法次数为1次,两个台阶的方法次数为2个。n个台阶的方法可以理解成上n-2个台阶,然后2步直接上最后一步;或者上n-1个台阶,再单独上一步。 // 公式是ways = ways[n-1] + ways[n-2] , ways[1] = 1, ways[2] = 2 // 每次至多只能爬两步的情形 int ClimbStairs2(int n) { if (n <= 2) return n; int ways = 0; int step1 = 1, step2 = 2; for (int i = 2; i < n; i++) { ways = step1 + step2; step1 = step2; step2 = ways; } return ways; } // 扩展 // 每次至多只能爬三步的情形 int ClimbStairs3(int n) { if (n <= 2) return n; if (n == 3) return 4; int ways = 0; int step1 = 1, step2 = 2, step3 = 4; for (int i = 3; i < n; i++) { ways = step1 + step2 + step3; step1 = step2; step2 = step3; step3 = ways; } return ways; } int main() { int n; while (cin >> n) { cout << ClimbStairs3(n) << endl; } return 0; }
相关文章推荐
- 【搜索】 HDU 4770 Lights Against Dudely
- BaiduMap SDK开发时只能显示网格不能显示地图的解决办法
- How To系列(二):how to baidu dork
- OpenStack Mnaila 2015-10-01 IRC会议内容
- POJ 3007:Organize Your Train part II
- POJ 3007:Organize Your Train part II
- http://blog.csdn.net/jackystudio/article/details/17019023
- 正确使用std::auto_ptr http://blog.csdn.net/just_a_beginning/article/details/4386755
- Contains Duplicate II
- 什么是BNF范式,什么又是EBNF范式? http://blog.csdn.net/designlife/article/details/3206543
- 217.Contains Duplicate
- sh: 0: getcwd() failed: No such file or directory解决
- yum.Errors.MiscError: xz compression not available
- RMI CORBA AIDL IPC RPC 之间的关系
- Ubuntu升级内核后启动VirtualBox虚拟机报错NS_ERROR_FAILURE
- RMAN-06820: WARNING: failed to archive current log at primary database
- int main(int argc,char* argv[])详解
- AIX下安装proFTPD-支持虚拟用户和SFTP
- windows平台打补丁,报错OPatch failed with error code = 74
- 硬软RAID的区别