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

目录
相关文章
|
3月前
|
索引
【每日一题Day131】LC1144递减元素使数组呈锯齿状 | 贪心+枚举
【每日一题Day131】LC1144递减元素使数组呈锯齿状 | 贪心+枚举
34 0
92. 递归实现指数型枚举
92. 递归实现指数型枚举
|
3月前
|
算法
简记二分算法模板与代码案例:整数二分和浮点数二分
本文介绍了两种算法模板,分别是整数二分和浮点数二分。
28 0
|
3月前
|
存储 算法 测试技术
位运算、状态压缩、枚举子集汇总
位运算、状态压缩、枚举子集汇总
|
3月前
|
人工智能 测试技术
【位运算 状态压缩 枚举子集】1178. 猜字谜
【位运算 状态压缩 枚举子集】1178. 猜字谜
|
3月前
递归实现指数型枚举
递归实现指数型枚举
21 0
|
3月前
leetcode-372:超级次方(快速幂的实现以及取余的规则和推导)
leetcode-372:超级次方(快速幂的实现以及取余的规则和推导)
32 0
|
8月前
递归实现排列型枚举
递归实现排列型枚举
|
机器学习/深度学习 C语言
C语言:给定两个数,求这两个数的最大公约数(新思路:辗转相除法)
思路一:普通方法 总体思路: (一). 生成相关变量; 从键盘输入两个数;
105 0
C语言:给定两个数,求这两个数的最大公约数(新思路:辗转相除法)
|
算法 程序员 C语言
C语言基础(有关三个数比较大小、冒泡排序、最大公约数、和有关某个数x的绝对值的n次方除于n的阶乘问题的函数求解法;和阶乘函数递归方法;和数组作函数参数的
C语言基础(有关三个数比较大小、冒泡排序、最大公约数、和有关某个数x的绝对值的n次方除于n的阶乘问题的函数求解法;和阶乘函数递归方法;和数组作函数参数的