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

【蓝桥杯试题】递归实现排列型枚举

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

文章目录

  • 1. 题目描述
  • 2. 代码展示
    • 法一:dfs
    • 法二:next_permutation
      • `next_permutation/prev_permutation`函数:
  • 最后,感谢大家支持u (^ _ ^)

1. 题目描述

把 1∼n 这 n 个整数排成一行后随机打乱顺序,输出所有可能的次序。

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

  • 输出格式

  • 按照从小到大的顺序输出所有方案,每行 1 个。

  • 首先,同一行相邻两个数用一个空格隔开。

  • 其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面。

  • 数据范围
    1 ≤ n ≤ 9

  • 输入样例:

3
  • 输出样例:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

2. 代码展示

法一:dfs

#include<bits/stdc++.h>
using namespace std;const int N = 15;
int n, path[N]; //用path存储数据【保存序列】
bool vis[N];  //用vis表示是否被使用过void dfs(int x){if(x > n){  //如果超出n,则表示都填完了,那么按存储的顺序全部打印for(int i = 1; i <= n; i++){if(vis[i]) cout << path[i] << " ";}   cout << endl;return ;}//未超出的话,则需要填入x,保存在path中for(int i = 1; i <= n; i++){    //依次选择1~n中是否被使用if(!vis[i]){    //如果未被使用vis[i] = true;  //记录下来使用过,修改状态path[x] = i;    //存进path中dfs(x + 1);     //遍历下一位vis[i] = false; //回溯}}
}int main(){cin >> n;memset(path, 0, sizeof(path)); //初始化path全为0dfs(1);return 0;
}

在这里插入图片描述

法二:next_permutation

next_permutation/prev_permutation函数:

  • next_permutation函数将按字母表顺序生成给定序列的下一个较大的排列,直到整个序列为降序为止

  • prev_permutation函数与之相反,是生成给定序列的上一个较小的排列

  • next_permutation(数组头地址,数组尾地址);若下一个排列存在,则返回真,如果不存在则返回假

  • 若求上一个排列,则用prev_permutation

#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;const int N = 15;
int n, a[N]; //利用next_permutation函数
//next_permutation(数组头地址,数组尾地址);若下一个排列存在,则返回真,如果不存在则返回假.若求上一个排列,则用prev_permutation
int main(){cin >> n;for(int i = 1; i <= n; i++){a[i] = i;}do{for(int i = 1; i <= n; i++){cout << a[i] << " ";}cout <<  endl;        }while(next_permutation(a + 1, a + n + 1));return 0;
}

在这里插入图片描述

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

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

printf("点个赞吧*^*");
cout << "收藏一下叭o_o";
System.out.println("评论一下吧^_^");
print("关注一下叭0-0")

相关文章:

【蓝桥杯试题】递归实现排列型枚举

&#x1f483;&#x1f3fc; 本人简介&#xff1a;男 &#x1f476;&#x1f3fc; 年龄&#xff1a;18 &#x1f91e; 作者&#xff1a;那就叫我亮亮叭 &#x1f4d5; 专栏&#xff1a;蓝桥杯试题 文章目录1. 题目描述2. 代码展示法一&#xff1a;dfs法二&#xff1a;next_perm…...

入职字节测试岗外包一个月,我离职了...

有一种打工人的羡慕&#xff0c;叫做“大厂”。真是年少不知大厂香&#xff0c;错把青春插稻秧。但是&#xff0c;在深圳有一群比大厂员工更庞大的群体&#xff0c;他们顶着大厂的“名”&#xff0c;做着大厂的工作&#xff0c;还可以享受大厂的伙食&#xff0c;却没有大厂的“…...

weak学习入门-01

作用:集中在特征提取、算法选择和参数调优上 本篇几乎是汇总了大佬的参考 官网https://www.cs.waikato.ac.nz/ml/weka 大佬的入门教程:初试weka数据挖掘 - 加拿大小哥哥 - 博客园 (cnblogs.com) 参考书:数据挖掘实用机器学习技术(原书第2版)...

线程池中shutdown()和shutdownNow()方法的区别

线程池中shutdown()和shutdownNow()方法的区别 一般情况下&#xff0c;当我们频繁的使用线程的时候&#xff0c;为了节约资源快速响应需求&#xff0c;我们都会考虑使用线程池&#xff0c;线程池使用完毕都会想着关闭&#xff0c;关闭的时候一般情况下会用到shutdown和shutdow…...

高可用/性能

文章目录1.数据库系统架构发展&#xff08;1&#xff09;单库架构&#xff08;2&#xff09;主备架构&#xff08;3&#xff09;主从架构2.主从复制主从同步配置主从复制模式&#xff08;1&#xff09;异步复制&#xff08;2&#xff09;半同步复制&#xff08;3&#xff09;全…...

PriorityQueues优先队列

优先队列优先队列&#xff08;priority queue&#xff09;是计算机科学中的一类抽象数据类型。优先队列中的每个元素都有各自的优先级&#xff0c;优先级最高的元素最先得到服务&#xff1b;优先级相同的元素按照其在优先队列中的顺序得到服务。优先队列通常使用“堆”&#xf…...

arm 堆栈

先转一篇 stm32 堆和栈(stm32 Heap & Stack)【worldsing笔记】_stm32堆栈_slj_win的博客-CSDN博客 关于堆和栈已经是程序员的一个月经话题&#xff0c;大部分有是基于os层来聊的。 那么&#xff0c;在赤裸裸的单片机下的堆和栈是什么样的分布呢&#xff1f;以下是网摘&…...

leetcode-面试题 05.02. Binary Number to String LCCI

Description Given a real number between 0 and 1 (e.g., 0.72) that is passed in as a double, print the binary representation. If the number cannot be represented accurately in binary with at most 32 characters, print “ERROR”. Example1: Input: 0.625Outpu…...

C语言函数阐述

C 函数 函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数&#xff0c;即主函数 main() &#xff0c;所有简单的程序都可以定义其他额外的函数。 您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的&#xff0c;但在逻辑上&#xff0c…...

二叉树——把二叉搜索树转换为累加树

538. 把二叉搜索树转换为累加树 链接 给出二叉 搜索 树的根节点&#xff0c;该树的节点值各不相同&#xff0c;请你将其转换为累加树&#xff08;Greater Sum Tree&#xff09;&#xff0c;使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。 提醒一下&#xf…...

Java使用DFA算法实现敏感词过滤

1 前言敏感词过滤就是你在项目中输入某些字&#xff08;比如输入xxoo相关的文字时&#xff09;时要能检测出来&#xff0c;很多项目中都会有一个敏感词管理模块&#xff0c;在敏感词管理模块中你可以加入敏感词&#xff0c;然后根据加入的敏感词去过滤输入内容中的敏感词并进行…...

UG NX二次开发(C#)-外挂 - 配置文件说明(.men文件/.rtb文件/.trb文件)

文章目录 1、前言2、UG NX菜单说明2.1UG NX的Ribbon样式说明2.2 UG NX的Ribbon配置文件3、外挂的加载配置文件说明3.1 创建配置文件夹3.2 填写.men文件3.2 填写.rtb文件3.2 填写.tbr文件4、将外挂加载到UG NX菜单中5、重启UG NX,就可以实现外挂加载了。1、前言 UG NX二次开发…...

Web3中文|日本元宇宙经济“狂飙”

2月27日&#xff0c;三菱、富士通和其它科技公司发布关于建立“日本元宇宙经济区”的协议&#xff0c;表示将联手从角色扮演游戏的角度创建开放的元宇宙基础设施&#xff0c;以推动日本的Web3战略。据了解&#xff0c;日本一直在努力将Web3技术纳入其国家议程&#xff0c;去年1…...

@Autowired和@Resource到底有什么区别

Autowired 和 Resource 都是 Spring/Spring Boot 项目中&#xff0c;用来进行依赖注入的注解。它们都提供了将依赖对象注入到当前对象的功能&#xff0c;但二者却有众多不同&#xff0c;并且这也是常见的面试题之一&#xff0c;所以我们今天就来盘它。 Autowired 和 Resource 的…...

2023年最新阿里云服务器价格表出炉(精准收费标准及配置价格表)

阿里云在全球率先宣布了基于 Intel Ice Lake 处理器的第七代云服务器ECS&#xff0c;性能提升的同时降低了报价&#xff0c;性价比更高了。进入2023年阿里云服务器价格依然是大家关心的问题&#xff0c;事实上阿里云服务器租用价格和最新收费标准都可以通过官方云服务器计算器来…...

ElasticSearch - SpringBoot整合ES实现文档的增删改操作

文章目录1. ElasticSearch和kibana的安装和配置2. SpringBoot 项目环境搭建3. 创建索引4. 索引文档5. 更新文档6. 删除文档https://www.elastic.co/guide/en/elasticsearch/reference/current/search-your-data.htmlhttps://www.elastic.co/guide/cn/elasticsearch/guide/curre…...

嵌入式 LVGL移植到STM32F4

目录 LVGL简介 1、特点 2、LVGL的硬件要求 3、相关网站 4、LVGL源码下载 5、LVGL移植要求 5.1 移植过程-添加源码 2、更改接口文件 3、显示实现 4、添加外部中文字体的方法 5、编译下载后有几种情况 6、调用显示 6、GUI-Guider使用 6.1 安装软件 6.2 使用…...

VSCode——SSH免密登录

文章目录本地PC端&#xff08;一般为Windows&#xff09;1. 检查自己是否已经生成公钥2. 配置VScode的SSH config远程服务器端1. 服务器新建授权文件2. 赋权限3. 重启远程服务器的ssh服务最全步骤&#xff1a;【设置ssh免密不起作用&#xff1f;彻底搞懂密钥】vscode在remote S…...

python未来应用前景怎么样

Python近段时间一直涨势迅猛&#xff0c;在各大编程排行榜中崭露头角&#xff0c;得益于它多功能性和简单易上手的特性&#xff0c;让它可以在很多不同的工作中发挥重大作用。 正因如此&#xff0c;目前几乎所有大中型互联网企业都在使用 Python 完成各种各样的工作&#xff0…...

webpack基本使用和开发环境配置

目录 1 webpack 基本使用 01 webpack 简介 02 webpack 初体验 2 webpack开发环境配置 03 打包样式资源 04 打包html资源 05 打包图片资源 06 打包其他资源&#xff08;以打包icon为例&#xff09; 07 devServer 08.开发环境配置 1 webpack 基本使用 由于笔记文档没有…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...