题目描述
将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。
例如:n=7,k=3,下面三种分法被认为是相同的。 1,1,5; 1,5,1; 5,1,1;
问有多少种不同的分法。
输入
输入n,k (6< n< =200,2< =k< =6)
输出
一个整数,即不同的分法。
样例输入
7 3
样例输出
4
#include<stdio.h>
int n, k, j, ans;
void dfs(int step, int sum, int last)
{
int i;
if(step == k)
{
if(sum == n)
{
ans++;
}
return;
}
for(i = last; i <= n - sum; i++)
{
dfs(step + 1, sum + i, i);
}
}
int main()
{
scanf("%d %d", &n, &k);
dfs(0, 0, 1);
printf("%d", ans);
return 0;
}