您的位置:首页 > 编程语言 > C语言/C++

C/C++学习(四)变态跳台阶

2015-11-24 22:15 453 查看
题目描述:一只青蛙一次可以跳上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;

}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: