蓝桥杯基础知识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 = 24
    
    bool 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;	//初始顺序为2341
    bool 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后,顺序变为1234
	return 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;	//初始顺序为2341
    bool 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后,顺序变为4321
	return 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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/299455.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Fiddler工具 — 8.会话列表(Session List)

1、会话列表说明 Fiddler抓取到的每条HTTP请求&#xff08;每一条称为一个session&#xff09;。 主要包含了请求的ID编号、状态码、协议、主机名、URL、内容类型、body大小、进程信息、自定义备注等信息。如下图&#xff1a; 说明&#xff1a; 名称含义#抓取HTTP Request的顺…

电脑如何屏幕录制?轻松录制高清视频

在当今信息化的时代&#xff0c;电脑已经成为工作和生活的重要工具。无论是在进行演示、教学还是记录重要操作步骤时&#xff0c;屏幕录制都是非常有用的。可是电脑如何屏幕录制呢&#xff1f;本篇文章将介绍三种常见的电脑屏幕录制方法&#xff0c;通过学习这些方法&#xff0…

[C#]使用DlibDotNet人脸检测人脸68特征点识别人脸5特征点识别人脸对齐人脸比对FaceMesh

【官方框架地址】 https://github.com/takuya-takeuchi/DlibDotNet 【算法介绍】 DlibDotNet是一个开源的.NET库&#xff0c;用于实现机器学习和计算机视觉应用。它基于C库dlib&#xff0c;通过C/CLI封装了dlib的所有功能&#xff0c;为.NET开发者提供了简单易用的API。以下是…

力扣刷题记录(29)LeetCode:695、1020、130

695. 岛屿的最大面积 这道题和计算岛屿周长类似&#xff0c;在这里dfs的功能就是由一块陆地出发&#xff0c;找出这块陆地所在的岛屿并返回岛屿面积。 class Solution { public:int dfs(vector<vector<int>>& grid,int i,int j){if(i<0||i>grid.size())…

微信小程序 获取地址信息(uniapp)

参考API地址&#xff1a;微信小程序JavaScript SDK | 腾讯位置服务 <script> // 引入SDK核心类&#xff0c;js文件根据自己业务&#xff0c;位置可自行放置var QQMapWX require(../../js/uploadImg/qqmap-wx-jssdk.js);export default {data(){return{qqmapsdk:}},onL…

【Spring Cloud】组件概念详解

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《Spring Cloud》。&#x1f3af;&#x1f3af; &am…

Hive精选10道面试题

1.Hive内部表和外部表的区别&#xff1f; 内部表的数据由Hive管理&#xff0c;外部表的数据不由Hive管理。 在Hive中删除内部表后&#xff0c;不仅会删除元数据还会删除存储数据&#xff0c; 在Hive中删除外部表后&#xff0c;只会删除元数据但不会删除存储数据。 内部表一旦…

odoo17 | 用户界面的基本交互

前言 现在我们已经创建了我们的新模型及其 相应的访问权限&#xff0c;是时候了 与用户界面交互。 在本章结束时&#xff0c;我们将创建几个菜单以访问默认列表 和窗体视图。 数据文件 &#xff08;XML&#xff09; Odoo在很大程度上是数据驱动的&#xff0c;因此模块定义的…

pytoch安装

pytoch安装 1. 准备工作1.1 需要提前安装的软件 2. 安装pyTorch我遇到的问题 3. 显卡测试4. CPU与GPU切换方法4.1 创建张量4.2 第一种切换方法4.3 第二种切换方法 1. 准备工作 1.1 需要提前安装的软件 Anaconda 史上最全最详细的Anaconda安装教程CUDA CUDA安装教程&#xff0…

Python笔记06-文件操作

文章目录 文件的编码文件读取文件写入文件追加 文件的编码 编码技术即&#xff1a;翻译的规则&#xff0c;记录了如何将内容翻译成二进制&#xff0c;以及如何将二进制翻译回可识别内容。算机中有许多可用编码&#xff1a;UTF-8、GBK、Big5等 不同的编码&#xff0c;将内容翻译…

其他排序(基数排序,希尔排序和桶排序)(数据结构课设篇3,python版)(排序综合)

本篇博客主要详细讲解一下其他排序&#xff08;基数排序&#xff0c;希尔排序和桶排序&#xff09;也是排序综合系列里最后一篇博客。第一篇博客讲解的是LowB三人组&#xff08;冒泡排序&#xff0c;插入排序&#xff0c;选择排序&#xff09;&#xff08;数据结构课设篇1&…

【C++】深入了解构造函数之初始化列表

目录 一、再谈构造函数 1、引入 1&#xff09;构造函数体赋值 2&#xff09;不同成员变量赋值 2、初始化列表 一、再谈构造函数 1、引入 1&#xff09;构造函数体赋值 在创建对象时&#xff0c;编译器通过调用构造函数&#xff0c;给对象中各个成员变量一个合适的初始值…

勇哥带您手搓一个信息发布系统CMS(3)--抽象栏目模板设计

目录 引言 一、栏目数据库设计。 二、Controller层方法设计 引言 在CMS开发过程中&#xff0c;一般如果采用thymeleaf开发&#xff0c;那就需要每一个页面配一个Controller中的方法指定页面&#xff0c;但是这样就会导致Controller中的方法非常多&#xff0c;而且也会破坏C…

yarn -v和vue -V报错环境变量配置

node官网下载安装好node后&#xff0c;node-v npm-v查看版本号&#xff0c;安装好node后会自动安装好npm和配置好全局环境变量 全局安装 yarn npm i yarn -g 查看是否安装成功 yarn -v 安装 vue/cli yarn global add vue/cli 查看是否安装成功 vue -V 或vue --version 如果…

STL——deque详解

目录 &#x1f4a1;基本概念 &#x1f4a1;deque构造函数 &#x1f4a1;deque赋值操作 &#x1f4a1;deque大小 &#x1f4a1;deque插入和删除 &#x1f4a1;deque数据存取 &#x1f4a1;deque排序 &#x1f4a1;基本概念 功能: 双端数组&#xff0c;可以对头端进行插入删…

VmWare虚拟机的安装

VmWare官方最新版下载地址 vmware官方下载地址 安装流程 安装成功验证 安装完成之后&#xff0c;打开网络中心&#xff0c;一定要确认这里多出两个网络连接&#xff0c;才证明Vmware已经安装成功

Kali Linux——获取root权限

目录 一、设置root密码 【操作命令】 【操作实例】 二、临时获取root权限 【操作命令】 【操作实例】 三、提升用户到root 1、获取root权限 2、进入/etc/passwd 3、查看root账号ID 4、找到需要修改的用户 5、输入i&#xff0c;进入编辑模式 6、把用户的ID改成跟r…

【好书推荐-第二期】《实战AI大模型 》:带你走进大模型GPTs、AIGC的世界(李开复、周鸿祎、颜水成倾力推荐)

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号&#xff1a;程序员洲洲。 &#x1f388; 本文专栏&#xff1a;本文…

数据结构c语言版:顺序表

顺序表的定义 顺序表是一种线性数据结构&#xff0c;它由一组连续的存储单元组成&#xff0c;用来存储具有相同数据类型的元素。顺序表中的元素按照逻辑顺序依次存放&#xff0c;并且可以通过索引来访问和修改元素。 顺序表的实现方式 两种&#xff1a;静态顺序表和动态顺序表。…

华为mstp、vrrp、ospf、isis、bgp等综合一起排错

最终实现左边私网和右边私网全部ping通 SW1 vlan batch 12 34 stp region-configuration //mstp配置 region-name test instance 12 vlan 12 instance 34 vlan 34 active region-configuration interface GigabitEthernet0/0/3 port link-type trunk port trunk allow-pass …