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

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;
}
相关推荐
MoRanzhi12034 天前
106.正则问题(分治)
python·算法·正则表达式·蓝桥杯·递归·分治算法·字符串处理
yi0116 天前
DAY28: LeetCode 111. 二叉树的最小深度
人工智能·笔记·python·算法·leetcode·二叉树·递归
yi0117 天前
DAY27: LeetCode 110. 平衡二叉树 | 在递归中判断是否平衡
人工智能·笔记·python·算法·leetcode·二叉树·递归
xbzb9 天前
Shell 函数:语法、传参与递归调用一次讲透
shell·递归·函数·调用·传参·递归调用
青柠之夏cc14 天前
递归揭秘:从原理到陷阱
递归·函数·乘
Logic10116 天前
关于汉诺塔问题的分析
c语言·算法·递归·函数·解题思路·递归函数·汉诺塔问题
UIU11422 天前
递归算法与汉诺塔
c++·学习·算法·c#·递归
_Narcissus_2 个月前
分治&递归
数据结构·c++·笔记·算法·leetcode·递归·分治
OuO-22 个月前
笔试强训 Day 44:最小差值、kotori 和素因子、dd 爱科学 1.0
二分查找·动态规划·贪心·模拟·记忆化搜索·递归·状态表示优化