超级楼梯(HDU-2040)
生活随笔
收集整理的這篇文章主要介紹了
超级楼梯(HDU-2040)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Problem Description
? ? 有一樓梯共M級,剛開始時你在第一級,若每次只能跨上一級或二級,要走上第M級,共有多少種走法?
Input
? ??輸入數據首先包含一個整數N,表示測試實例的個數,然后是N行數據,每行包含一個整數M(1<=M<=40),表示樓梯的級數。
Output
? ??對于每個測試實例,請輸出不同走法的數量
Sample Input
2
2
3
Sample Output
1
2
思路:
設:dp[i]為走到第i階的步數
則:
? ? 狀態轉移方程:dp[i]=dp[i-1]+dp[i-2];
? ? 邊界條件:dp[1]=1,dp[2]=1;
注意從第三階開始走
Source Program
#include<iostream> #include<cstring> #define N 41 using namespace std;int dp[N];int main() {int n,m;int i,j,k;cin>>n;while(n--){cin>>m;memset(dp,0,sizeof(dp));//初始化/*邊界條件*/dp[1]=1;dp[2]=1;for(i=3;i<=m;i++)dp[i]=dp[i-1]+dp[i-2];cout<<dp[m]<<endl;}return 0; }?
總結
以上是生活随笔為你收集整理的超级楼梯(HDU-2040)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息学奥赛C++语言:滔滔吃苹果
- 下一篇: 开关灯(信息学奥赛一本通-T1109)