题目描述
将整数n分成k份,且每份不能为空,任意两种分法不能相同(不考虑顺序)。
例如:n=7,k=3,下面三种分法被认为是相同的。
1,1,5;1,5,1;5,1,1;
问有多少种不同的分法。
输入
每组数据由一行上的2个整数n,k构成(6<n≤200,2≤k≤6)。
输出
对每组测试数据,输出不同的分法整数。
样例输入
7 3
样例输出
4
代码实现
#include <iostream>
using namespace std;
int Div(int m,int n)
{
if(m<n)return 0;
else if(m==n||n==1)return 1;
else return Div(m-n,n)+Div(m-1,n-1);
}
int main()
{
int n,k;
while(~scanf("%d %d",&n,&k)){
cout<<Div(n,k)<<endl;
}
return 0;
}
思路分析详见这篇博客:整数划分问题