7-9 数的划分 (10 分)
将整数n分成k份,且每份不能为空,任意两个解不能相同(不考虑顺序)。
例如:n=7,k=3,下面三种分法被认为是相同的。
{1,1,5};{1,5,1};{5,1,1};
问有多少种不同的分法。 输出一个整数,即不同的分法。
输入格式:
两个整数n,k(6<n≤200,2≤k≤6),中间用单个空格隔开。
输出格式:
一个整数,即不同的分法。
输入样例:
8 2
输出样例:
4
作者
严华云
单位
湖州师范学院
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<iostream> using namespace std; int n,k,p[10000],sum=0,ans=0; void dfs(int pre,int num,int cnt) { if(cnt==1) { ans++; //for(int i=0;i<k-1;i++){ // cout<<p[i]<<' '; //} //cout<<num<<endl; return; } for(int i=pre;i<=num/cnt;i++){ p[k-cnt]=i; dfs(i,num-i,cnt-1); } } int main() { cin>>n>>k; dfs(1,n,k); cout<<ans; return 0; }