如何将一个数M分成N数的和,比如4的几种情况:1+1+1+1,1+1+2,1+3。
其中1+1+2跟1+2+1算一种情况,求代码,大神快来
能拿原题来看吗?
表示没看懂题目
主要是不知道有几个入口参数,几个出口参数
#include<iostream>
using namespace std;
int partition(int n);
int partitionHelp(int n,int m)
{
if(n<1 ||m<1)
{
return 0;
}
else if(n==1 ||m==1)
{
return 1;
}
else if(n<m)
{
return partitionHelp(n,n);
}
else if(n==m)
{
return 1+partitionHelp(n,n-1);
}
else
{
return partitionHelp(n,m-1)+partitionHelp(n-m,m);
}
}
int partition(int n)
{
partitionHelp(n,n);
}
int main(){
int n;
while(cin >> n){
printf("共有%d种不重复的分解方式\n", partition(n));
}
return 0;
}