题目描述
将整数n分成k份,且每份不能为空,问有多少种不同的分法。
当n=7,k=3时,下面三种分法被认为是相同的:1,1,5; 1,5,1; 5,1,1
输入描述:
一行两个数n,k。
输出描述:
一行一个整数,即不同的分法数。
#include<iostream>
using namespace std;
int n,k;
int dp[205][10];//n个1 分成k份
int main()
{
ios::sync_with_stdio;
cin>>n>>k;//分成k份
dp[0][0]=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=min(i,k);j++)
{
//i分成j份 = i-1分成j-1份 + i-1分成j份
dp[i][j]=dp[i-1][j-1]+dp[i-1][j];
}
}
cout<<dp[n][k]<<endl;
return 0;
}