设f(n)表示走法随阶梯数量n变化的函数
找规律:
1级阶梯f(1) = 1种走法
2级阶梯f(2) = 2种走法
3级阶梯f(3) = f(2) + f(1) = 3种走法
4级阶梯f(4) = f(3) + f(2) = 5种走法
...
n级阶梯f(n) = f(n - 1) + f(n - 2)种走法
#include <iostream> #include <cstdio> using namespace std; typedef long long ll; ll f[100];//用long long存储上楼方式总数,避免数据溢出 int main(){ f[1] = 1, f[2] = 2; //打表用空间换时间 for(int i = 3; i <= 90; i++){ f[i] = f[i - 1] + f[i - 2]; } int n;//楼梯阶数 //输入多组数据 while(~scanf("%d", &n)){ printf("%lld\n", f[n]);//输出 } return 0; }