UVa - 1017 Staircases(dp)

 1 /**
 2 dp
 3 1.在dp[n-1]个方法中每个的最后一个上加1
 4 2.在dp[n-h]的加一排高度为h; 
 5 */
 6 
 7 
 8 #include<algorithm>
 9 #include<iostream>
10 #include<cstring>
11 #include<cstdio>
12 #include<cmath>
13 #include<queue>
14 #include<stack>
15 #include<map>
16 #include<set>
17 
18 #define mem(a,b) memset(a,b,sizeof(a))
19 #define ll long long
20 
21 const int maxn=1e5+10;
22 
23 using namespace std;
24 
25 ll dp[maxn];
26 
27 int main(){
28     int n;
29     cin>>n;
30     dp[0]=1;
31     for(int i=1;i<=n;i++)//枚举最后一排的高度
32     {
33         for(int j=n;j>=i;j--)//用了多少个砖块
34         {
35             dp[j]+=dp[j-i];
36         }
37     }
38     cout<<dp[n]-1<<endl;
39     return 0;
40 }

 

posted @ 2019-03-15 21:10  Minun  阅读(168)  评论(0编辑  收藏  举报