整数划分
完全背包变形
状态转移方程:fj = fj,fj-v
#include <iostream>
using namespace std;
const int N = 1e3+10,M = 1e9+7;
int f[N];
int v[N],w[N];
int n;
//fj = fj,fj-v
int main() {
cin>>n;
for(int i = 1;i<=n;i++) w[i] = 1,v[i] = i;
f[0] = 1;// 在所有数字中一个都不选择
for(int i = 1;i<=n;i++){
for(int j = 1;j<=n;j++){
if(j>=i)
f[j] = f[j]+f[j-i];
f[j] %=M;
}
}
cout<<f[n]%M;
return 0;
}