递归实现组合型枚举

递归实现组合型枚举

码农世界 2024-05-12 前端 65 次浏览 0个评论

#include

using namespace std;

int n,m;

vector num;

void dfs(int k)

{

    //如题解所述

    if(num.size() > m || num.size() + (n - k + 1) < m)

        return;

    //到达枚举边界,输出结果并结束

    if(k == n + 1)

    {

        for(int i = 0;i < num.size();++i)

            cout << num[i] << " ";

        cout << endl;

        return;

    }

    //选择这个数

    num.push_back(k);

    dfs(k+1);

    //回溯

    num.pop_back();

    //不选择这个数

    dfs(k+1);

}

int main(void)

{

    cin >> n >> m;

    dfs(1);

    return 0;

}

转载请注明来自码农世界,本文标题:《递归实现组合型枚举》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,65人围观)参与讨论

还没有评论,来说两句吧...

Top