输入一个正整数a,输出它的不降拆分

 

#include<iostream>
#include<cstdio>
using namespace std;
int a;
int ans[1005],l;

void print()
{
    for(int i=0;i<l;i++)
    {
        if(i) cout<<" ";
        cout<<ans[i];
    }
    cout<<endl;
    return ;
}
void dfs(int sum,int st)
{
    if(sum==a)
    {
        print();
        return ;
    }
    if(sum>a) return ;
    for(int i=st;i<a;i++)
    {
        sum+=i;
        ans[l++]=i;
        dfs(sum,i);
        l--;
        sum-=i;
    }
}
int main()
{
    cin>>a;
    dfs(0,1);
    return 0;
}
dfs and reverse