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

来源:互联网 发布:vb 播放器 编辑:程序博客网 时间:2024/06/05 14:32
题目描述:
一只青蛙一次可以跳上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;
}


0 0