loj10018数的划分
题目描述
将整数 n 分成 k 份,且每份不能为空,问有多少种不同的分法。当 n=7,k=3 时,下面三种分法被认为是相同的:1 1 5;1 5 1 ;5 1 1
输入格式
一行两个数 n ,k 。
输出格式
一行一个整数,即不同的分法数。
样例
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 }