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

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;
}
相关推荐
长安er2 天前
LeetCode 100/101/110/199 对称/平衡二叉树与右视图
算法·leetcode·二叉树·dfs·bfs·递归
quan26319 天前
20251204,职级权限,开发实践分享
java·递归·java权限·职级架构
达不溜先生 ୧⍢⃝୨13 天前
循环赛日程表问题
c语言·算法·递归·分治·循环赛日程表·动态二维数组
啊吧怪不啊吧19 天前
自己调用自己的算法——递归算法
大数据·算法·leetcode·逻辑回归·递归
1白天的黑夜125 天前
递归-二叉树中的剪枝-814.二叉树剪枝-力扣(LeetCode)
c++·leetcode·剪枝·递归
ShineWinsu1 个月前
对于数据结构:链式二叉树的超详细保姆级解析—中
数据结构·c++·算法·面试·二叉树·校招·递归
Q741_1471 个月前
C++ 面试高频考点 链表 迭代 递归 力扣 25. K 个一组翻转链表 每日一题 题解
c++·算法·链表·面试·递归·迭代
課代表1 个月前
JavaScript 中获取二维数组最大值
javascript·max·数组·递归·array·最大值·二维
Mysticbinary1 个月前
对递归两层含义的理解
递归·循环
深思慎考2 个月前
从合并两个链表到 K 个链表:分治思想的递进与堆优化
数据结构·链表·递归··队列·合并链表