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 }