递归实现指数型枚举(递归)

92. 递归实现指数型枚举 - AcWing题库

每个数有选和不选两种情况

我们把每个数看成每层,可以画出一个递归搜索树

叶子节点就是我们的答案

很容易写出每dfs函数

dfs传入一个u表示层数

当层数大于我们n时,去判断每个数字的选择情况,输出被选的数字

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

const int N = 20;

int n;
bool vis[N];

void dfs(int u) 
{
    if (u > n) 
    {
        for (int i = 1;i <= n;i++)
        {
            if (vis[i])
            {
                cout << i << ' ';
            }
        }
        cout << '\n';
    }else {
        vis[u] = true;
        dfs(u+1);
        
        vis[u] = false;
        dfs(u+1);
    }
}

int main() 
{
    cin >> n;
    
    dfs(1);
    
    return 0;
}
相关推荐
崎岖Qiu5 小时前
leetcode100.相同的树(递归练习题)
算法·leetcode·二叉树·力扣·递归
zaiyang遇见13 天前
【Complete Search】递归的完全搜索Complete Search with Recursion
递归·c/c++·全排列·搜索·信息学奥赛·程序设计竞赛·二进制掩码
EndingCoder1 个月前
算法与前端的可访问性
前端·算法·递归·树形结构
littlegirll1 个月前
KADB行列转换
递归·行列转换·kadb
码破苍穹ovo2 个月前
回溯----5.括号生成
java·数据结构·力扣·递归
阳洞洞3 个月前
leetcode 148. Sort List
leetcode·链表·归并排序·递归·排序
冉佳驹3 个月前
C语言 ——— 函数
c语言·数据结构·学习·递归·函数·嵌套调用·链式访问
knightkkzboy4 个月前
《递归:C语言中的强大工具》
c语言·开发语言·递归·栈溢出
lvchaoq4 个月前
图解力扣回溯及剪枝问题的模板应用
leetcode·深度优先·剪枝·回溯·递归
神里流~霜灭4 个月前
蓝桥备赛指南(14):树的直径与重心
c语言·数据结构·c++·算法·二叉树·深度优先·递归