hdu2041超级楼梯(DP)

总是把DP和搜索搞混……很苦恼,有没有什么标志性区别呀

这道题是个DP,当前台阶的走法=前一步的两种走法之和(前一步上一个台阶/上两个台阶);(他可以走一步到这,也可以走两步到这)

最初站在第一个台阶上。

 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<string.h>
 4 #include<algorithm>
 5 #include<math.h>
 6 using namespace std;
 7 
 8 int main()
 9 {
10     int n,m,a[40];
11     while(cin>>m)
12     {
13         while(m--)
14         {
15             cin>>n;
16             a[1]=0;a[2]=1;a[3]=2;
17             for(int i = 4; i <= n; i++)
18             {
19                 a[i] = a[i-1] + a[i-2];
20             }
21             cout<<a[n]<<endl;
22         }
23     }
24     return 0;
25 }
原文地址:https://www.cnblogs.com/lyqf/p/9743859.html