HDU2041 超级楼梯 (线性DP)

fn[i]表示走上第i级台阶的所有走法。

方程:fn[i]=fn[i-1]+fn[i-2]; 

 1 #include<cstdio>
 2 #define MAXN 40
 3 using namespace std;
 4 typedef unsigned long long LL;
 5 LL fn[MAXN+1];
 6 
 7 void solve(){
 8     fn[1]=0;
 9     fn[2]=1;
10     fn[3]=2;
11     for(int i=4;i<=MAXN;i++)
12         fn[i]=fn[i-2]+fn[i-1];
13 }
14 
15 int main(){
16     int n,m;
17     solve();//先预处理出所有结果 
18     scanf("%d",&n);
19     while(n--){
20         scanf("%d",&m);
21         printf("%lld\n",fn[m]);
22     }
23     return 0;
24 }

 

posted @ 2022-06-18 15:04  YHXo  阅读(29)  评论(0编辑  收藏  举报