讨论 / 题解哦!
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;

}

查看更多回复
提交回复