[遞推簡單dp]-hdu 2041 超級樓梯
阿新 • • 發佈:2018-11-10
[遞推簡單dp]-hdu 2041 超級樓梯
標籤: ACM
題意:
有一樓梯共M級,剛開始時你在第一級,若每次只能跨上一級或二級,要走上第M級,共有多少種走法?
input
輸入資料首先包含一個整數N,表示測試例項的個數,然後是N行資料,每行包含一個整數M(1<=M<=40),表示樓梯的級數。
output
對於每個測試例項,請輸出不同走法的數量
sample input
2
2
3
sample output
1
2
解題思路:
**狀態轉移方程為:dp[i]=dp[i-2]+dp[i-1]
到達第2層有一種方法,到達第三層有兩種方法
到達第i層(i>3)可以是從第i-2層上來,也可以是i-1層上來
可以先打表計算所有層數的可能,然後詢問時直接輸出避免遞迴**
AC程式碼:
#include <iostream>
#include <string.h>
using namespace std;
int dp[100];
int main()
{
int t,n;cin>>t;
dp[2]=1;
dp[3]=2;
for(int i=3;i<50;i++)
dp[i]=dp[i-2]+dp[i-1];
while(t--)
{
cin>>n;
cout<<dp[n]<<endl;
}
return 0;
}