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

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;
}
相关推荐
Heaven64511 天前
练8:递归
python·蓝桥杯·递归
寻找码源19 天前
【头歌实训:递归实现斐波那契数列】
c语言·算法·递归·斐波那契
飞滕人生TYF23 天前
斐波那契数列 相关问题 详解
java·数学·动态规划·递归·斐波那契数列
nameofworld23 天前
前端面试笔试(五)
开发语言·前端·javascript·面试·递归
飞滕人生TYF1 个月前
m个数 生成n个数的所有组合 详解
java·递归
宇宙超级勇猛无敌暴龙战神1 个月前
商品规格递归拼接
java·递归·商品规格
sweetheart7-71 个月前
LeetCode131. 分割回文串(2024冬季每日一题 4)
算法·深度优先·记忆化搜索·回溯·递归
AnFany1 个月前
LeetCode【0002】两数相加
算法·leetcode·链表·递归·两数相加
小卡皮巴拉2 个月前
【力扣刷题实战】相同的树
c语言·算法·leetcode·二叉树·递归