P2404 自然数的拆分问题

水题,组合型枚举

const int N=10;
int path[N];
int n;

void dfs(int u,int sum,int last)
{
    if(sum > n) return;

    if(sum == n)
    {
        for(int i=0;i<u;i++)
            if(i) cout<<"+"<<path[i];
            else cout<<path[i];
        cout<<endl;
    }

    for(int i=last;i<n;i++)
    {
        path[u]=i;
        dfs(u+1,sum+i,i);
    }
}

int main()
{
    cin>>n;

    dfs(0,0,1);
    //system("pause");
}
原文地址:https://www.cnblogs.com/fxh0707/p/13694739.html