acwing<递归实现指数型枚举>

简介: 每日打卡

image.png

如题是刚开始写递归的基础题,对于n个数我们都有两种选择,选与不选,那我们用一个数组表示状态,0为未处理,1为选中,2为不选。每次递归都要更新状态,递归结束后回归上一级的状态。当深度等于整数个数时,则表示一次递归结束,最后将每个结果输出。就完成了题目的要求。


#include<cstdio>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 15;  //最大数据个数
int n;
int sta[15];  //每个数的状态
void dfs(int i)
{
    if (i == n)
    {
        for (int j = 0; j < n; j++)
        {
            if (sta[j] == 1)
            {
                printf("%d ", j + 1); //下标从0开始
            }
        }
        puts("");
        return;
    }
    sta[i] = 1;   //分支一种为选中,另一种为不选
    dfs(i + 1);
    sta[i] = 2;   //更新状态
    dfs(i + 1);
}
int main()
{
    scanf("%d", &n);
    dfs(0);
    return 0;
}

image.gif

目录
相关文章
|
6月前
|
索引
【每日一题Day131】LC1144递减元素使数组呈锯齿状 | 贪心+枚举
【每日一题Day131】LC1144递减元素使数组呈锯齿状 | 贪心+枚举
45 0
92. 递归实现指数型枚举
92. 递归实现指数型枚举
|
6月前
|
算法
简记二分算法模板与代码案例:整数二分和浮点数二分
本文介绍了两种算法模板,分别是整数二分和浮点数二分。
47 0
|
6月前
|
存储 算法 测试技术
位运算、状态压缩、枚举子集汇总
位运算、状态压缩、枚举子集汇总
|
6月前
|
人工智能 测试技术
【位运算 状态压缩 枚举子集】1178. 猜字谜
【位运算 状态压缩 枚举子集】1178. 猜字谜
|
6月前
|
机器学习/深度学习 人工智能 Python
背包问题四种类型
背包问题四种类型
61 0
|
6月前
递归实现指数型枚举
递归实现指数型枚举
29 0
|
6月前
leetcode-372:超级次方(快速幂的实现以及取余的规则和推导)
leetcode-372:超级次方(快速幂的实现以及取余的规则和推导)
43 0
|
11月前
递归实现排列型枚举
递归实现排列型枚举
|
11月前
|
算法 测试技术 C#
C++二分查找算法:132 模式解法二枚举2
C++二分查找算法:132 模式解法二枚举2