1 条题解

  • 0
    @ 2025-8-24 21:21:55

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar feecle6418
    **

    搬运于2025-08-24 21:21:54,当前版本为作者最后更新于2017-06-23 11:12:59,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    又来一篇搜索与回溯。。。。。。

    这题可以用优化版的dfs

    组合与排列还是有很大区别的,不过框架相同,代码出人意料的简洁!

    #include<bits/stdc++.h>
    using namespace std;
    int r,a[100],n;
    void dfs(int k){//搜索第k个数
        int i;
        if(k>r){
            for(i=1;i<=r;i++){
                cout<<setw(3)<<a[i];//输出,场宽为三
            }
            cout<<endl;
            return ;//回到前一层
        }
        for(i=a[k-1]+1;i<=n;i++){
            a[k]=i;
            dfs(k+1);//直接进行下一次调用
        }
    }  
    int main()  
    {   
        cin>>n>>r;
        dfs(1);
        return 0;  
    }  
    
    • 1

    信息

    ID
    159
    时间
    1000ms
    内存
    125MiB
    难度
    2
    标签
    递交数
    1
    已通过
    1
    上传者