爬楼梯问题
来源:互联网 发布:ubuntu 关闭apache2 编辑:程序博客网 时间:2024/04/29 04:36
有m级台阶,每次可以上n个或者n个以下,问有多少种走法。比如有4级 每次最多可以走3级台阶,则走法为{1,1,1,1} {2,1,1,}{1,2,1}{1,1,2}{2,2}{1,3}{3,1}共7种走法。
我觉得可以把这个问题当做一个树,每走完一步后下一步有n-1种走法。直到凑够台阶数。也就是说每个节点下面有n个叉,分别存储下一次要迈出的台阶数。一n=3为例,假设第一次迈出一级,第二次有可能出1 或2 或3,以此类推,直到总迈出数等于m。
1
1 2 3
123 123 123
…..
我们只需要遍历这个树的每个节点,判断当前所有经过路径上节点的和是否为m即可,如果超过m则退回。
#include <stdio.h>#include <stdlib.h>int count = 0;/**i 当前迈出的级数sum 当前层所走的总级数m 台阶总数*/int test(int i, int sum, int m){ if(sum > m) return 0; if(sum == m) { count++; return 0; } //下一次迈出1级 test(1,1+sum, m); //下一次迈出2级 test(2,2+sum, m); //下一次迈出3级 test(3, 3+sum, m); }main(){ //假设当前有32级台阶 最多一次走3级台阶 test(1, 1, 32); test(2, 2, 32); test(3, 3, 32); printf("result : %d !\n", count); system("pause");}
2 0
- 爬楼梯问题
- 爬楼梯问题
- 爬楼梯问题
- 爬楼梯问题
- 爬楼梯问题
- 爬楼梯问题
- 爬楼梯问题
- 爬楼梯问题
- 爬楼梯问题
- 爬楼梯问题种种
- 爬楼梯问题
- 爬楼梯问题
- 13爬楼梯问题
- 爬楼梯问题
- 爬楼梯问题
- 爬楼梯问题的解决
- Recursion 爬楼梯问题 @CareerCup
- 回溯解决爬楼梯问题
- VirtualBox导入ova报VERR_VD_VMDK_INVALID_FORMAT错误及解决过程
- BestCoder Round #36 HDU 5199 Gunner
- Unity有时候旧版本的编辑器打开新版本的项目会奔溃
- POJ 2785 4 Values whose Sum is 0(双向搜索+二分)
- 内部排序之六:总结
- 爬楼梯问题
- 第16题
- 我的第一个python爬虫程序(从百度贴吧自动下载图片)
- C++学习之vector
- SG Value
- http客户端请求及服务端详解
- SIP(会话发起协议)
- 单链表的动态建立和逆序输出
- android listview