900. 整数划分
题目链接https://www.acwing.com/problem/content/902/
题目:
方法:f[i][j]表示的是在1~i中拼凑出j。f[i][j]=f[i-1][j]+f[i][j-i]
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int mod=1e9+7;
int f[1010][1010];
//f[i][j]=f[i-1][j]+f[i][j-i];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++) f[i][0]=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(j>=i)
f[i][j]=(f[i-1][j]+f[i][j-i])%mod;
else
f[i][j]=f[i-1][j];
}
}
cout<<f[n][n];
return 0;
}