DP 状态转移方程:f[i][j]=f[i-1][j]+f[i-1][j-i]
//Ural 1017
#include<iostream>
using namespace std;
const int MAX=505;
long long f[MAX][MAX]={0};
//f[i][j]表示最后一个阶梯的高度不超过i,使用j个bricks的方案 f[i][j]=f[i-1][j]+f[i-1][j-i]
int main()
{
int n,i,j;
cin>>n;
f[0][0]=1;
for(i=1; i<=n; i++)
{
for(j=n; j>=i; j--)
f[i][j]=f[i-1][j]+f[i-1][j-i];
for(j=0; j<=i-1; j++)
f[i][j]=f[i-1][j];
}
cout<<f[n][n]-1<<endl;
//system("pause");
}