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

目录
相关文章
|
7月前
|
索引
【每日一题Day131】LC1144递减元素使数组呈锯齿状 | 贪心+枚举
【每日一题Day131】LC1144递减元素使数组呈锯齿状 | 贪心+枚举
50 0
92. 递归实现指数型枚举
92. 递归实现指数型枚举
|
7月前
|
算法
简记二分算法模板与代码案例:整数二分和浮点数二分
本文介绍了两种算法模板,分别是整数二分和浮点数二分。
57 0
|
7月前
|
算法 搜索推荐 程序员
第五十一练 请以递归方式实现计算两个整数的最大公约数的函数
第五十一练 请以递归方式实现计算两个整数的最大公约数的函数
40 0
|
7月前
|
算法 测试技术 C++
【组合数学】【动态规划】【前缀和】1735生成乘积数组的方案数
【组合数学】【动态规划】【前缀和】1735生成乘积数组的方案数
|
7月前
递归实现指数型枚举
递归实现指数型枚举
32 0
|
机器学习/深度学习 C语言
C语言:给定两个数,求这两个数的最大公约数(新思路:辗转相除法)
思路一:普通方法 总体思路: (一). 生成相关变量; 从键盘输入两个数;
148 0
C语言:给定两个数,求这两个数的最大公约数(新思路:辗转相除法)
|
Python
深入理解动态规划算法 | 凑整数
深入理解动态规划算法 | 凑整数
142 0
【AcWing】一道二分拓展的题(浮点数)
790. 数的三次方根 - AcWing题库
88 0