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)
输入:输入可能包含多个测试样例,对于每个测试案例,输入包括一个整数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;
}
相关文章推荐
- 约瑟夫问题解决及实现代码(C语言版)
- Introduce to algorithm--------pseudo code to C/C++ code (chapter 24)
- C++ 不用判断运算符进行比较两个数的大小
- C++ 语句
- C++primer plus第六版课后编程练习答案4.1
- Google C++ Style Guide
- qt/c++ 实现二维码生成(利用qrencode)
- 大数加法(C语言)
- 《C++ primer》英文第五版阅读笔记(十八)——成员运算符和条件运算符
- hdu 4034 Graph(深化最短路floyd)
- C++ vector多维数组初始化及清零
- C/C++学习(三)模板类之间继承
- [C++] 插入排序法 (Insertion sort)
- C++11常用特性学习——多线程优化初步(原子类型/lambda语句)
- C++11常用特性学习-类型安全(强类型枚举类/智能指针)
- C++函数指针数组的使用方法
- 黑马程序员——OC语言——类和对象
- C++11常用特性学习-易学易用新特性(>>/auto/decltype/范围的for)
- 编程珠玑第一章之产生数据1000000-9999999(二)C/C++高效实现
- 黑马程序员——C语言——数组