next_permutation函数讲解

news2024/11/20 6:32:18

目录

前言:

简要概述:

例题(1):

P1088 [NOIP2004 普及组] 火星人

题目描述

输入格式

输出格式

输入输出样例

说明/提示

代码(1):

例题(2):

P1706 全排列问题

题目描述

输入格式

输出格式

输入输出样例

说明/提示

代码(2):

        

前言:

 在我们的日常刷题中,总会遇到一些题是不会的,在不会的时候我们首先想到的是看答案,在算法题遇到不会时候也是这样,不会先看题解,在题解中学会思路,方法,师夷长技以制夷,最后增加自己的本领。

简要概述:

next_permutation函数(bool类型)是STL中计算排列组合的方法,在比赛或者练习过程中可以使用,next_permutation函数的参数是数组的区间坐标(两个,始(如:a+0)末(如:a+n)n个数)

比如现在起始排列为123,调用next_permutation函数后会把下一次排列的结果保存入数组a中(全排列的顺序是一定的),当全排列到达最后没有全排列时返回false

例题(1):

P1088 [NOIP2004 普及组] 火星人

题目描述

人类终于登上了火星的土地并且见到了神秘的火星人。人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法。这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类科学家,科学家破解这个数字的含义后,再把一个很小的数字加到这个大数上面,把结果告诉火星人,作为人类的回答。

火星人用一种非常简单的方式来表示数字――掰手指。火星人只有一只手,但这只手上有成千上万的手指,这些手指排成一列,分别编号为 1,2,3,⋯1,2,3,⋯。火星人的任意两根手指都能随意交换位置,他们就是通过这方法计数的。

一个火星人用一个人类的手演示了如何用手指计数。如果把五根手指――拇指、食指、中指、无名指和小指分别编号为 1,2,3,41,2,3,4 和 55,当它们按正常顺序排列时,形成了 55 位数 1234512345,当你交换无名指和小指的位置时,会形成 55 位数 1235412354,当你把五个手指的顺序完全颠倒时,会形成 5432154321,在所有能够形成的 120120 个 55 位数中,1234512345 最小,它表示 11;1235412354 第二小,它表示 22;5432154321 最大,它表示 120120。下表展示了只有 33 根手指时能够形成的 66 个 33 位数和它们代表的数字:

三进制数代表的数字
12312311
13213222
21321333
23123144
31231255
32132166

现在你有幸成为了第一个和火星人交流的地球人。一个火星人会让你看他的手指,科学家会告诉你要加上去的很小的数。你的任务是,把火星人用手指表示的数与科学家告诉你的数相加,并根据相加的结果改变火星人手指的排列顺序。输入数据保证这个结果不会超出火星人手指能表示的范围。

输入格式

共三行。
第一行一个正整数 �N,表示火星人手指的数目(1≤�≤100001≤N≤10000)。
第二行是一个正整数 �M,表示要加上去的小整数(1≤�≤1001≤M≤100)。
下一行是 11 到 �N 这 �N 个整数的一个排列,用空格隔开,表示火星人手指的排列顺序。

输出格式

�N 个整数,表示改变后的火星人手指的排列顺序。每两个相邻的数中间用一个空格分开,不能有多余的空格。

输入输出样例

输入 #1复制

5
3
1 2 3 4 5

输出 #1复制

1 2 4 5 3

说明/提示

对于 30%30% 的数据,�≤15N≤15。

对于 60%60% 的数据,�≤50N≤50。

对于 100%100% 的数据,�≤10000N≤10000。

noip2004 普及组第 4 题

代码(1):

# include<bits/stdc++.h>
using namespace std;      //命名空间 
 int n,m;
 int a[10001] ; //a来存储值 
 int main()
 {
 	cin>>n>>m;
 	for(int i=0;i<n;i++)
 	{
 		cin>>a[i];
	 }
	 for(int i=0;i<m;i++)
 	next_permutation(a,a+n);
 	for(int i=0;i<n;i++)
 	{
 		cout<<a[i]<<" ";
	 }
 }

例题(2):

P1706 全排列问题

题目描述

按照字典序输出自然数 11 到 �n 所有不重复的排列,即 �n 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。

输入格式

一个整数 �n。

输出格式

由 1∼�1∼n 组成的所有不重复的数字序列,每行一个序列。

每个数字保留 55 个场宽。

输入输出样例

输入 #1复制

3

输出 #1复制

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

说明/提示

1≤�≤91≤n≤9。

代码(2):

# include <bits/stdc++.h>
using namespace std;
 int a[13];
 int n;
 int main()
 {
 	cin>>n;
 	for(int i=0;i<n;i++)
 	{
 		a[i]=i+1;
	 }
	 do{
	 for(int i=0;i<n;i++)
 	{
 	cout<<setw(5)<<a[i];
	 }
	 cout<<endl;
	 }
	 while(next_permutation(a,a+n));

 }


        

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何开发 Vite 3 插件构建 Electron 开发环境?(文末附视频讲解)

开发新版本 Vue 项目推荐你使用 Vite 脚手架构建开发环境&#xff0c;然而 Vite 脚手架更倾向于构建纯 Web 页面&#xff0c;而不是桌面应用&#xff0c;因此开发者要做很多额外的配置和开发工作才能把 Electron 引入到 Vue 项目中&#xff0c;这也是很多开发者都基于开源工具来…

用户多兴趣建模MIND

1. 概述 在工业界&#xff0c;一个完整的推荐系统中通常包括两个阶段&#xff0c;分别为召回阶段和排序阶段。在召回阶段&#xff0c;根据用户的兴趣从海量的商品中去检索出用户&#xff08;User&#xff09;可能感兴趣的候选商品&#xff08; Item&#xff09;&#xff0c;满…

JavaEE进阶第二课:Spring创建与使用

上一篇我们介绍了Spring的概念&#xff0c;知道了Spring是众多工具方法的IoC容器。 但是纸上谈兵终觉浅&#xff0c;这一篇文章就来介绍Spring创建与使用&#xff0c; 注之后我们对对象的称呼就叫Bean 1.1Spring项目的创建与配置 1.创建maven项目&#xff0c;语言选java&…

【1819. 序列中不同最大公约数的数目】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一个由正整数组成的数组 nums 。 数字序列的 最大公约数 定义为序列中所有整数的共有约数中的最大整数。 例如&#xff0c;序列 [4,6,16] 的最大公约数是 2 。 数组的一个 子序列 本质是一个序…

Python(16):Numpy之array数组的数值计算

目录 0. 相关文章链接 1. 创建Array数组 2. 基本数值计算 2.1. numpy中的函数 2.2. 数组中的函数 3. 指定维度进行计算 3.1. numpy中的函数 3.2. 数组中的函数 4. 复杂计算 4.1. 统计乘机 4.2. 获取对应值的索引位置 4.3. 求平均值 4.4. 求标准差 4.5. 求方差 4…

【MFEN:轻量级多尺度特征提取:SR网络】

MFEN: Lightweight multi-scale feature extraction super-resolution network in embedded system &#xff08;MFEN&#xff1a;嵌入式轻量级多尺度特征提取超分辨率网络&#xff09; 深度卷积神经网络&#xff08;CNN&#xff09;在超分辨率&#xff08;SR&#xff09;方面…

基于java springboot+mybatis爱游旅行平台前台+后台设计实现

基于java springbootmybatis爱游旅行平台前台后台设计实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获…

PCI、PCI-X、PCI-E、PCI-E Card、Mini PCI-E、M.2、Add-in Card 这些概念你搞清楚了吗

搞硬件或通信的“攻城狮”们&#xff0c;免不了要和各种通信协议及接口打交道。比如&#xff0c;我们经常接触PCI、PCI-X、PCI-E、PCI-E Card、Mini PCI-E、M.2(NGFF)、Add-in Card这些概念&#xff0c;作为“攻城狮”队伍中的一员&#xff0c;你搞清楚它们之间的关系了吗&…

Linux第一个小程序-进度条

目录 \r&&\n 行缓冲区概念 倒计时程序 进度条代码 \r&&\n 回车概念换行概念 \n[rootVM-12-17-centos lesson8]# touch test.c [rootVM-12-17-centos lesson8]# touoch Makefile bash: touoch: command not found [rootVM-12-17-centos lesson8]# touch Mak…

Python:每日一题之完全二叉树的权值

题目描述 给定一棵包含 N 个节点的完全二叉树&#xff0c;树上每个节点都有一个权值&#xff0c;按从 上到下、从左到右的顺序依次是 A1​,A2​,⋅⋅⋅AN​&#xff0c;如下图所示&#xff1a; 现在小张要把相同深度的节点的权值加在一起&#xff0c;他想知道哪个深度的节点 权…

【Linux操作系统】Linux进程状态和两个特殊进程

文章目录一.一套普适性的进程状态理论1.运行2.阻塞3.挂起二.一套具体的Linux进程状态1.R-运行2.S-睡眠3.T-暂停5.t-被追踪三.僵尸进程和孤儿进程1.僵尸进程2.孤儿进程一.一套普适性的进程状态理论 1.运行 由于CPU数量相对于进程数量来说少之又少,所以CPU维护了一个运行队列,方…

Synchronized底层原理系列之Synchronized的偏向锁实现原理

作者简介&#xff1a;专注于研究Linux内核、Hotspot虚拟机、汇编语言、JDK源码、各大中间件源码等等喜欢的话&#xff0c;可以三连关注~上篇文章已经对Synchronized关键字做了初步的介绍&#xff0c;从字节码层面介绍了Synchronized关键字&#xff0c;最终字节码层面就是monito…

【Linux】 iptables 入门简介

文章目录前言作用持久化和恢复执行的顺序前言 简单地说&#xff0c;iptables是Linux的防火墙程序。它将使用表监控进出服务器的流量。这些表包含称为链的规则集&#xff0c;这些规则将过滤传入和传出数据包。 作用 当数据包与规则匹配的时候&#xff0c;会为其指定一个目标&a…

基于幂等表思想的幂等实践

一、为什么需要幂等 分布式场景下&#xff0c;多个业务系统间实现强一致的协议是极其困难的。一个最简单和可实现的假设就是保证最终一致性&#xff0c;这要求服务端在处理一个重复的请求时需要给出相同的回应&#xff0c;同时不会对持久化数据产生副作用&#xff08;即多次操…

【Linux】Linux下调试器gdb的使用

&#x1f451;作者主页&#xff1a;安 度 因 &#x1f3e0;学习社区&#xff1a;StackFrame &#x1f4d6;专栏链接&#xff1a;Linux 文章目录一、前言二、铺垫三、指令集和使用1、指令集2、演示四、结语如果无聊的话&#xff0c;就来逛逛 我的博客栈 吧! &#x1f339; 一、前…

通信原理与MATLAB(十三):AMI的编解码

目录1.AMI的的编解码原理1.1 AMI编码原理1.2 AMI解码原理2.AMI编解码的代码3.AMI编解码结果图4.AMI的误码率曲线4.1 原理4.2 AMI的误码率曲线代码4.3 误码率曲线图1.AMI的的编解码原理 1.1 AMI编码原理 如下图所示&#xff0c;AMI的编码原理:将原始码元的1转换成1,0转换成-1。…

快过年了,用Python康康哪一家足浴店可以带朋友去玩.....

人生苦短&#xff0c;我用Python 首先肯定是去正经足浴店&#xff0c; 毕竟一年出差也不少&#xff0c; 大家都很辛苦&#xff0c; 好不容易放假了&#xff0c; 约上好兄弟一起去放松放松~ 所需环境 python 3.8 解释器pycharm 编辑器 所需模块 requests 数据来源分析 …

Silane-PEG-NH2 氨基聚乙二醇硅烷 NH2-PEG-Silane结构式

英文名称&#xff1a;Silane-PEG-NH2 Silane-PEG-Amine 中文名称&#xff1a;硅烷-聚乙二醇-氨基 分子量&#xff1a;1k&#xff0c;2k&#xff0c;3.4k&#xff0c;5k&#xff0c;10k&#xff0c;20k。。。 存储条件&#xff1a;-20C&#xff0c;避光&#xff0c;避湿 用 途…

2022年度总结,迎接2023

目录 我和CSDN的2022 初次见面&#xff1a; 你我的成长&#xff1a; 博客&#xff1a; 比赛&#xff1a; 我和CSDN的2023 我和CSDN的2022 初次见面&#xff1a; CSDN你好啊&#xff01;我跟你的初次见面在于2022年4月2日&#xff01;&#xff01;&#xff01; 这这半年内…

【算法5.1】背包问题 - 01背包 (至多最大价值、至少最小价值)

目录 至少模板和至多模板的两大区别 1、至多模板 2、至少模板 2. 01背包 - 至多模板 - 体积至多j&#xff0c;总价值最大 1、朴素做法 - 二维dp 2、优化 - 一维dp 4700. 何以包邮&#xff1f; - 至少模板 - 价值至少j&#xff0c;总价值最小 至少模板和至多模板的两大区…