http://wikioi.com/problem/1039/
这道dp很不错(题解中有背包做法)
一个整数划分成k份且k>=2必定有一种方法中有1,分开这个1,另外的都是大于2的,这时都减1,于是又会出现分出1
if(i>=j) dp[i][j]=dp[i-j][j]+dp[i-1][j-1];
得到关系式
#include<cstdio>
int n,k;
int dp[210][10]={0};
int main()
{
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
{
dp[i][1]=1;
}
for(int i=1;i<=n;i++)
for(int j=2;j<=k;j++)
{
if(i>=j) dp[i][j]=dp[i-j][j]+dp[i-1][j-1];
}
printf("%d",dp[n][k]);
return 0;
}