略微思考可以发现,想要抵达目标台阶n;仅有两种方法,
1.从n-1阶进一步;
2.从n-2阶进两步。(为什么n-2阶不可以进两个一步,因为n-2阶处进一步就抵达了n-1阶(此为第一种情况))
可以得到
{
f[1]=1
f[2]=2
f[n]=f[n-1]+f[n-2]
}
那么根据动态规划递推求解,直接生成一个数组。
#include<iostream> using namespace std; long long answer[91]; void Initial(){ answer[1]=1; answer[2]=2; int i=3; while(i<=90){ answer[i]=answer[i-1]+answer[i-2]; i++; } return; } int main(){ Initial(); int num; while(cin>>num){ cout<<answer[num]<<endl; } return 0; }