c语言 设计 爬楼梯的方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 设计 爬楼梯的方法相关的知识,希望对你有一定的参考价值。
高手帮忙啊!!
20阶楼梯
你说的爬楼梯是指有n阶楼梯,每次可以上1,2……,p阶(1<=p<=n),问走到最上面有多少种不同的走法吧?
这个就是递推啊~
设上i级台阶共有f(i)种不同的方法,很简单就可以知道f(1)=1,f(2)=2…… 当i大于2时,分n种情况讨论:第一步上了1级台阶,第一步上了2级台阶,……第一步上了n级台阶。
如果第一步上了1级楼梯,那么还剩下i-1级楼梯,要走完这i-1级楼梯,一共有f(i-1)种方法。
如果第一步上了2级楼梯,那么还剩下i-2级楼梯,要走完这i-2级楼梯,一共有f(i-2)种方法。
……
如果第一步上了n级楼梯,那么还剩下i-n级楼梯,要走完这i-2级楼梯,一共有f(i-n)种方法。
所以,在第一种情况下有f(i-1)种不同走法,第二种情况有f(i-2)种不同走法……这n种情况既没有重复方案,也没有遗漏,因此得出f(i)=f(i-1)+f(i-2)+……+f(i-n)
接着就行了,200阶楼梯都不成问题。 参考技术B 说清楚一些
爬楼梯,计算有多少种方法(1125)
题目描述:
楼梯有n级台阶,上楼可以一步上1级,也可以一步上2级,计算有多少种不同的走法
其中n<=35
输入描述:
一个正整数n,占一行
输出描述:
一个整数,占一行,问题的结果,数据保证输出在32位有符号整型数据范围内。
样例输入:
20
33
样例输出:
10946
5702887
思想:巧妙利用了分治递归的思想,将大数 化为1和2两种情况,1只有一种情况,2有两种情况,设计巧妙。
1 #include<iostream> 2 using namespace std; 3 int fun(int n) 4 if(n>0) 5 if(n==1) 6 return 1; 7 8 if(n==2) 9 return 2; 10 11 else 12 return fun(n-1)+fun(n-2); 13 14 15 else 16 return 0; 17 18 19 int main() 20 int p,m; 21 while(cin>>p)//多组输入 22 m=fun(p); 23 cout<<m<<endl; 24 25 return 0; 26
以上是关于c语言 设计 爬楼梯的方法的主要内容,如果未能解决你的问题,请参考以下文章