题目描述
将整数 n 分成k 份,且每份不能为空,任意两个方案不相同(不考虑顺序)。
例如: n=7, k=3 ,下面三种分法被认为是相同的。
1,1,5;
1,5,1 ;
5,1,1 .
问有多少种不同的分法。
输入输出格式
输入格式:
n,k( 6<n≤200 , 2≤k≤6 )
输出格式:
1 个整数,即不同的分法。
输入输出样例
输入样例#1:
7 3
输出样例#1:
4
说明
四种分法为:
1,1,5 ;
1,2,4 ;
1,3,3 ;
2,2,3 .
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int s;
void dfs(int x,int y,int t)
{
if(y==1)
{
s++;
return ;
}
for(int i=x;i<=t/y;i++)
dfs(i,y-1,t-i);
}
int main()
{
int n,k;
scanf("%d%d",&n,&k);
dfs(1,k,n);
printf("%d",s);
return 0;
}