将一个数M分成N数的和,去重

如何将一个数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;
}