5 条题解

  • 2
    @ 2026-8-12 20:54:43
    #include<bits/stdc++.h>
    using namespace std;
    int apt[1000],naoziying;
    void dfs(int laobeizha/*步数*/,int laozhaji/*和*/){
        if(laozhaji>naoziying){/*如果步数比和还大,那就直接返回*/
            return;
        }
        if(laozhaji==naoziying){
            cout<<naoziying<<"=";
            for(int py=1;py<laobeizha;py++){
                if(py==laobeizha-1){
                    cout<<apt[py];
                }else{
                    cout<<apt[py]<<"+";
                }
            }
            cout<<endl;
        }
        if(laobeizha>naoziying){
            return;
        }
        for(int sy=apt[laobeizha-1];sy<=naoziying-1;sy++){
            apt[laobeizha]=sy;
            dfs(laobeizha+1,laozhaji+sy);/*选的时候步数加1,和加上i本身*/
        }
        return;
    }
    int main(){
        freopen("split.in","r",stdin);
        freopen("split.out","w",stdout);
        apt[0]=1;
        cin>>naoziying;
        dfs(1,0);
    return 0;
    }
    

信息

ID
532
时间
1000ms
内存
256MiB
难度
7
标签
(无)
递交数
135
已通过
35
上传者