完全背包做法
#include <iostream>
#include <algorithm>
using namespace std;
const int mod = 1e9 + 7, N = 1010;
int n;
int f[N];
int main()
{
cin >> n;
f[0] = 1; //只需要初始化一个值,当一个都不选且总和为0时只有一种选法,就是什么都不选
//f[1]表示什么都不选且总和为1,显然选法是0,以此类推除了f[0]=1其余都是0。
for (int i = 1; i <= n; i ++ ) //i表示只从1~i中选
for (int j = i; j <= n; j ++ ) //j表示总和等于j的方案数
f[j] = (f[j] + f[j - i]) % mod;
cout << f[n] << endl;
return 0;
}