loj10018数的划分

题目描述

将整数 n 分成 k 份,且每份不能为空,问有多少种不同的分法。当 n=7,k=3 时,下面三种分法被认为是相同的:1 1 5;1 5 1 ;5 1 1 

输入格式

一行两个数 n ,k 。

输出格式

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

样例
输入复制
7 3
输出复制
4

数据范围与提示

 6<=n<=200,2<=k<=6。

__________________________________

简单的深搜

__________________________________

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n,k;
 4 int ans;
 5 void dfs(int x,int p,int pre)
 6 {
 7     if(p==k)
 8         if(x>=pre)
 9         {
10             ans++;
11             return;
12         }
13     for(int i=pre;i<=x;++i)
14     {
15         dfs(x-i,p+1,i);
16     }
17 }
18 int main()
19 {
20     cin>>n>>k;
21     dfs(n,1,1);
22     cout<<ans;
23     return 0;
24 }
View Code
原文地址:https://www.cnblogs.com/gryzy/p/14030187.html