-
题目描述:
- 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法
-
输入:
- 输入可能包含多个测试样例,对于每个测试案例,输入包括一个整数n(1<=n<=50)。
-
输出:
对应每个测试案例,输出该青蛙跳上一个n级的台阶总共有多少种跳法。
分析:当台阶数为n时,可以分为以下步骤来完成:
设第一次跳的台阶数为s,跳台阶方式数为T,则:
(1)s=1时,T(n) = T(n-1)
(2)s=2时,T(n) = T(n-2)
.
.
.
(n)s=n时,T(n) = T(0) = 1
所以总的跳台阶方式数T可以表示为:
T(n) = T(0) + T(1) + T(2) + … + T(n-1)
由于T(0) = T(1) = 1,所以T(n) = 2^(n-1)
#include <iostream>
#include <math.h>
using namespace std;
/*题目描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。
求该青蛙跳上一个n级的台阶总共有多少种跳法
*/
class step
{
private:
int numstep;//台阶的数目
int num;//跳台阶的方式数
public:
step(int n):numstep(n)
{
}
void getstepnum()
{
this->num = (int)pow(2,this->numstep-1);
}
friend void num( step &step1);
};
void num( step &step1)
{
step1.getstepnum();
cout << step1.num <<endl;
}
int main()
{
// cout << "Hello World!" << endl;
step step11(6);
num(step11);
return 0;
}