题目描述】
将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。
例如:n=7,k=3,下面三种分法被认为是相同的。
1,1,5; 1,5,1; 5,1,1;
问有多少种不同的分法。 输出一个整数,即不同的分法。
【输入】
两个整数n,k(6<n≤200,2≤k≤6),中间用单个空格隔开。
【输出】
一个整数,即不同的分法。
【输入样例】
7 3
【输出样例】
4
与放苹果类似,只需体会其妙处,稍加修改
#include<iostream>
using namespace std;
int t,m,n;
int ty(int m,int n)
{
if(m==0||m==1||n==1) return 1;
if(m<n) return ty(m,m);
else return ty(m-n,n)+ty(m,n-1);
}
int main()
{
cin>>m>>n;
cout<<ty(m-n,n)<<endl;
return 0;
}
本文介绍了一种整数分拆的算法实现,该算法能够计算将整数n分为k个不同部分的方法数量,确保每部分都不为空且任意两部分不相同(忽略顺序)。通过递归方法实现了核心逻辑,并提供了完整的C++代码示例。
171

被折叠的 条评论
为什么被折叠?



