caoyue2017 2017-09-10 23:04:33
点我顶贴
收藏
删除
#include <cstdio>
int n,k,f[250][10];
int main()
{
scanf("%d %d",&n,&k);
for(int i=1;i<=n;i++) f[i][1]=1;
for(int i=2;i<=n;i++)
{
for(int j=1;j<=k;j++)
{
if(j<=i)f[i][j]=f[i-1][j-1]+f[i-j][j];
}
}
/*
f[i][j]表示将i划分成j份(每份至少为一)的方案数
f[i][j]=f[i-j][1]+f[i-j][2]+...+f[i-j][j]
又f[i-1][j-1]=f[i-j][1]+f[i-j][2]+...+f[i-j][j-1]
∴f[i][j]=f[i-1][j-1]+f[i-j][j]
*/
printf("%d\n",f[n][k]);
return 0;
}