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 }