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 }