当前位置: 首页 > news >正文

【蓝桥杯试题】 递归实现指数型枚举例题

💃🏼 本人简介:男
👶🏼 年龄:18
🤞 作者:那就叫我亮亮叭
📕 专栏:蓝桥杯试题

文章目录

  • 1. 题目描述
  • 2. 思路解释
    • 2.1 时间复杂度
    • 2.2 递归
  • 3. 代码展示
  • 最后,感谢大家支持u (^ _ ^)

1. 题目描述

从 1∼n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。

  • 输入格式
    输入一个整数 n。

  • 输出格式

    • 每行输出一种方案。
    • 同一行内的数必须升序排列,相邻两个数用恰好 1 个空格隔开。
    • 对于没有选任何数的方案,输出空行。
    • 本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意。
  • 数据范围
    1≤n≤15

  • 输入样例:

3
  • 输出样例:

3
2
2 3
1
1 3
1 2
1 2 3

2. 思路解释

2.1 时间复杂度

本题需要转化一下思路,根据样例,我们所要输出的内容为所有数据选与不选排列组合的全部方案。所以,每个数据都有选与不选的两种选择,一共1~n有n个数据,所以总共2n个方案,每次输出长度最长为n,再加上剪枝,则本题的时间复杂度应该不会超过n*2n

2.2 递归

递归精髓——从1~n依次遍历考虑选或不选

类似图下这样在这里插入图片描述
大佬的这张图的思路清晰了!!
在这里插入图片描述

3. 代码展示

#include<iostream>
#include<stdio.h>
using namespace std;
const int N = 20;
int n, a[N];
bool vis[N];    //记录i是否被选过void dfs(int x){if(x > n){  //如果超出n的值,则停止搜索,打印前面标记过的数for(int i = 1; i <= n; i++){if(vis[i]){ cout << i <<" ";}}   cout << endl;return ;}   else{vis[x] = true;  //选择这个数字dfs(x + 1); //遍历他的下一位vis[x] = false;  //不选这个数字dfs(x + 1);}
}int main(){cin >> n;    dfs(1);return 0;
}

更多解题思路详见这篇大佬的文章👉AcWing 92. 递归实现指数型枚举详解

最后,感谢大家支持u (^ _ ^)

如果感觉这篇文章对你有帮助的话,不妨三连支持下,十分感谢(✪ω✪)。

printf("点个赞吧*^*");
cout << "收藏一下叭o_o";
System.out.println("评论一下吧^_^");
print("关注一下叭0-0")
http://www.lryc.cn/news/25170.html

相关文章:

  • 【用Group整理目录结构 Objective-C语言】
  • JavaScript高级程序设计读书分享之8章——8.1理解对象
  • 代码随想录算法训练营第四十天 | 343. 整数拆分,96.不同的二叉搜索树
  • 数据结构与算法系列之顺序表的实现
  • 基于Linux_ARM板的驱动烧写及连接、挂载详细过程(附带驱动程序)
  • python-爬虫-字体加密
  • 计算机组成原理4小时速成5:输入输出系统,io设备与cpu的链接方式,控制方式,io设备,io接口,并行串行总线
  • 安全狗受聘成为福州网信办网络安全技术支撑单位
  • RV1126 在Ubuntu18.04开发环境搭建
  • 如何在 C++ 中调用 python 解析器来执行 python 代码(一)?
  • 操作系统权限提升(二十三)之Linux提权-通配符(ws)提权
  • Zookeeper下载和安装
  • Biomod2 (上):物种分布模型预备知识总结
  • 操作指南:如何高效使用Facebook Messenger销售(二)
  • 计算机三级|网络技术|中小型网络系统总体规划与设计方案|IP地址规划技术|2|3
  • 为什么一定要做集成测试?
  • 前端:CSS
  • CMMI—组织级过程定义(OPD)
  • 华为OD机试真题Python实现【猜字谜】真题+解题思路+代码(20222023)
  • 软测入门(三)Selenium(Web自动化测试基础)
  • 备战蓝桥杯——sort函数
  • 华为机试题:HJ86 求最大连续bit数(python)
  • 机器学习复习--logistic回归简单的介绍和代码调用
  • uniapp小程序接入腾讯地图sdk
  • 总结JavaScript中的条件判断与比较运算
  • 算法练习-排序(一)
  • CentOS7.6快速安装Docker
  • CentOS 7安装N卡驱动和CUDA和cuDNN
  • Java开发 - 分页查询初体验
  • C语言循环语句do while和嵌套循环语句讲解