洛谷 P1025 数的划分

题目描述

将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序)。

例如:n=7,k=3,下面三种分法被认为是相同的。

1,1,5; 1,5,1; 5,1,1;

问有多少种不同的分法。

输入输出格式

输入格式:

n,k (6<n<=200,2<=k<=6)

输出格式:

一个整数,即不同的分法。

输入输出样例

输入样例#1:
7 3
输出样例#1:
4

说明

四种分法为:1,1,5;1,2,4;1,3,3;2,2,3;

 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 int n,k,sum;
 5 void dfs(int a,int fenshu,int yushu)
 6 {
 7     if(fenshu==k)
 8         sum++;
 9     else
10         for(int i=a;i<=yushu/(k-fenshu+1);i++)
11             dfs(i,fenshu+1,yushu-i);
12 }
13 int main()
14 {
15     cin>>n>>k;
16     dfs(1,1,n);
17     cout<<sum<<endl;
18     return 0;
19 }
原文地址:https://www.cnblogs.com/hanruyun/p/6598970.html