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

目录
相关文章
|
4月前
|
索引
【每日一题Day131】LC1144递减元素使数组呈锯齿状 | 贪心+枚举
【每日一题Day131】LC1144递减元素使数组呈锯齿状 | 贪心+枚举
23 0
|
3月前
递归实现指数型枚举
递归实现指数型枚举
15 0
|
3月前
leetcode-372:超级次方(快速幂的实现以及取余的规则和推导)
leetcode-372:超级次方(快速幂的实现以及取余的规则和推导)
23 0
|
4月前
递归实现排列型枚举
递归实现排列型枚举
|
6月前
|
存储 算法 容器
精选算法题(1)——枚举符合要求的算术表达式(DFS、回溯法)
精选算法题(1)——枚举符合要求的算术表达式(DFS、回溯法)
|
11月前
|
算法 程序员 C语言
C语言基础(有关三个数比较大小、冒泡排序、最大公约数、和有关某个数x的绝对值的n次方除于n的阶乘问题的函数求解法;和阶乘函数递归方法;和数组作函数参数的
C语言基础(有关三个数比较大小、冒泡排序、最大公约数、和有关某个数x的绝对值的n次方除于n的阶乘问题的函数求解法;和阶乘函数递归方法;和数组作函数参数的
|
11月前
leetcode剑指offer53–n-1中缺失的数字(二分//or等差数列)
leetcode剑指offer53–n-1中缺失的数字(二分//or等差数列)
|
11月前
|
C++
【AcWing】一道二分拓展的题(浮点数)
790. 数的三次方根 - AcWing题库
59 0
|
人工智能
(数论)(枚举)(前缀和)1230. K倍区间
(数论)(枚举)(前缀和)1230. K倍区间
60 0