题目描述有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法?
注:规定从一级到一级有0种走法。
输入
输入数据首先包含一个整数n(1<=n<=100),表示测试实例的个数,然后是n行数据,每行包含一个整数m,(1<=m<=40), 表示楼梯的级数。
输出对于每个测试实例,请输出不同走法的数量
样例输入2
2
3
样例输出1
2
C++源码如下#include <iostream> using namespace std; int count(int m) { if (m == 1) return 0; else if (m == 2) return 1; int double_step_max = (m - 1) / 2;//m为上到的台阶级数,double_step_max是最多能走的两级数量 int sum = 0; //走法总数 for (int i = 0; i <= double_step_max; i++) { int single_step = m - i * 2 - 1;//单级台阶步数 int S = single_step + i; //总步数 int tmp = 1; for (int j = 0; j < i; j++) { tmp = tmp*(S - j) / (j + 1); } sum += tmp ; } return sum; } int main() { int n, m[100]; cin >> n; for (int i = 0; i < n; i++) { cin >> m[i]; cout << count(m[i]) << endl; } system("pause"); return 0; }
上台阶
最新推荐文章于 2024-08-25 15:20:09 发布