題目描述
N階樓梯上樓問題:一次可以走兩階或一階,問有多少種上樓方式。(要求採用非遞歸)
輸入描述:
輸入包括一個整數N,(1<=N<90)。
輸出描述:
可能有多組測試數據,對於每組數據, 輸出當樓梯階數是N時的上樓方式個數。
示例1
輸入
4
輸出
5
這道題採用動態規劃算法,考慮n階臺階最後一次,走一步的話,前面就是m[n-1]種走法,走兩步的話,前面就是m[n-2]種走法。
公式就是m[n]=m[n-1]+m[n-2]。
#include <iostream>
using namespace std;
int main(){
int n;
while(cin>>n){
long long m[92];
m[1]=1;
m[2]=2;
for(int i=3;i<=n;i++){
m[i]=m[i-1]+m[i-2];
}
cout<<m[n]<<endl;
}
return 0;
}