蓝桥杯基础知识2 全排列 next_permutation(), prev_permutation()

2024-01-07 09:28

本文主要是介绍蓝桥杯基础知识2 全排列 next_permutation(), prev_permutation(),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

蓝桥杯基础知识2 全排列 next_permutation(), prev_permutation()

#include<bits/stdc++.h>
using namespace std;int a[10];int main(){for(int i = 1; i <= 4; ++i)a[i] = i;	//4*3*2*1 = 24bool tag = true;while(tag){for(int i=1; i <= 4; ++i)cout << a[i] << ' ';cout << '\n';tag = next_permutation(a + 1, a + 1 + 4);}return 0;
}

C++ 在线工具 | 菜鸟工具 (runoob.com)

#include<bits/stdc++.h>
using namespace std;int a[10];int main(){a[1] = 2, a[2] = 3, a[3] = 4, a[4] = 1;	//初始顺序为2341bool tag = true;while(tag){for(int i=1; i <= 4; ++i)cout << a[i] << ' ';cout << '\n';tag = next_permutation(a + 1, a + 1 + 4);}for(int i = 1; i <= 4; ++i)cout << a[i] << ' ';//从2开始进行全排列,输出最后一个排列4321后,顺序变为1234return 0;
}

next_permutation函数用于生成当前序列的下一个序列。按字典序对序列重新排列,如果存在下一个排序,则当前序列更改为下一个排序,并返回true;如果当前序列已经是最后一个排列,则将序列更改为第一个排列,并返回false。

next_permutation全排列函数的时间复杂度是O(n),其中n是序列的长度。next_permutation()需要遍历和比较序列的每一个元素,以确定下一个排列组合。

#include<bits/stdc++.h>
using namespace std;int a[10];int main(){a[1] = 2, a[2] = 3, a[3] = 4, a[4] = 1;	//初始顺序为2341bool tag = true;while(tag){for(int i=1; i <= 4; ++i)cout << a[i] << ' ';cout << '\n';tag = prev_permutation(a + 1, a + 1 + 4);}for(int i = 1; i <= 4; ++i)cout << a[i] << ' ';//从2开始进行全排列,输出最后一个排列1234后,顺序变为4321return 0;
}

 

prev_permutation函数用于生成当前序列的上一个序列。按字典序对序列重新排列,如果存在上一个排序,则当前序列更改为上一个排序,并返回true;如果当前序列已经是第一个一个排列,则将序列更改为最后一个排列,并返回false。

prev_permutation函数时间复杂度为O(n),其中n是序列的长度。prev_permutation()需要遍历和比较序列的每一个元素,以确定上一个排列组合。

reference:

https://wenku.csdn.net/answer/7mxkew7uyk#

STL中关于全排列next_permutation以及prev_permutation的用法 - Xenny - 博客园 (cnblogs.com)

STL next_permutation和prev_permutation 算法原理和自行实现_next_permutation实现思想-CSDN博客

STL中关于全排列next_permutation以及prev_permutation的用法 - Xenny - 博客园 (cnblogs.com)

这篇关于蓝桥杯基础知识2 全排列 next_permutation(), prev_permutation()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/579472

相关文章

MySQL中Next-Key Lock底层原理实现

《MySQL中Next-KeyLock底层原理实现》Next-KeyLock是MySQLInnoDB存储引擎中的一种锁机制,结合记录锁和间隙锁,用于高效并发控制并避免幻读,本文主要介绍了MySQL中... 目录一、Next-Key Lock 的定义与作用二、底层原理三、源代码解析四、总结Next-Key L

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

计组基础知识

操作系统的特征 并发共享虚拟异步 操作系统的功能 1、资源分配,资源回收硬件资源 CPU、内存、硬盘、I/O设备。2、为应⽤程序提供服务操作系统将硬件资源的操作封装起来,提供相对统⼀的接⼝(系统调⽤)供开发者调⽤。3、管理应⽤程序即控制进程的⽣命周期:进程开始时的环境配置和资源分配、进程结束后的资源回收、进程调度等。4、操作系统内核的功能(1)进程调度能⼒: 管理进程、线

go基础知识归纳总结

无缓冲的 channel 和有缓冲的 channel 的区别? 在 Go 语言中,channel 是用来在 goroutines 之间传递数据的主要机制。它们有两种类型:无缓冲的 channel 和有缓冲的 channel。 无缓冲的 channel 行为:无缓冲的 channel 是一种同步的通信方式,发送和接收必须同时发生。如果一个 goroutine 试图通过无缓冲 channel

java常用面试题-基础知识分享

什么是Java? Java是一种高级编程语言,旨在提供跨平台的解决方案。它是一种面向对象的语言,具有简单、结构化、可移植、可靠、安全等特点。 Java的主要特点是什么? Java的主要特点包括: 简单性:Java的语法相对简单,易于学习和使用。面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态。跨平台性:Java的程序可以在不同的操作系统上运行,称为"Write once,

PHP字符串全排列

方法一: $str = 'abc';$a =str_split($str);perm($a, 0, count($a)-1);function perm(&$ar, $k, $m) {if($k == $m){ echo join('',$ar), PHP_EOL;}else {for($i=$k; $i<=$m; $i++) {swap($ar[$k], $ar[$i]);perm($ar

回溯——9.全排列

力扣题目链接 给定一个 没有重复 数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3]输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 解题思路 问题建模:题目要求给出一个数组的所有排列组合,属于典型的全排列问题,这可以用回溯法来解决。回溯法通过递归的方式,依次将数组中的每个元素放入排列中,直到生成

C语言蓝桥杯

一、语言基础 竞赛常用库函数 最值查询 min_element和max_element在vector(迭代器的使用) nth_element函数的使用 例题lanqiao OJ 497成绩分析 第一种用min_element和max_element函数的写法 第二种用min和max的写法 二分查找 二分查找只能对数组操作 binary_s

关于回调函数和钩子函数基础知识的整理

回调函数:Callback Function 什么是回调函数? 首先做一个形象的比喻:   你有一个任务,但是有一部分你不会做,或者说不愿做,所以我来帮你做这部分,你做你其它的任务工作或者等着我的消息,但是当我完成的时候我要通知你我做好了,你可以用了,我怎么通知你呢?你给我一部手机,让我做完后给你打电话,我就打给你了,你拿到我的成果加到你的工作中,继续完成其它的工作.这就叫回叫,手机