P2525 Uim的情人节礼物·其之壱 【字典序】【STL:prev_permutation】
题目描述
情人节到了,Uim打算给他的后宫们准备情人节礼物。UIm一共有N(1<=N<=9)个后宫妹子(现充去死 挫骨扬灰!)。
为了维护他的后宫的稳定。他通过编程,得出了一个送礼物的最佳顺序。这个我们管不着。
然而他认为,如果什么事情做得太圆满不是什么好事。于是他希望得到 原定顺序 的 前一个字典序的序列。
输入格式
第一行一个整数N
第二行N个整数,表示原定排列
输出格式
前一个排列
输入输出样例
输入 #1
3 1 3 2
输出 #1
1 2 3
说明/提示
若当前排列已经是第一个,则输出'ERROR'(引号不输出)
[del]骗分?嗯哼哼。。。[/del]
/*
方法一:用STL的一个函数: prev_permutation()
就可以自动制造前一个排列
*/#include <bits/stdc++.h>
using namespace std;
const int N=1e4+10;
int a[N];
int main()
{int n;cin>>n;for(int i=0;i<n;i++){cin>>a[i];}if(prev_permutation(a,a+n)) //如果比自己字典序小的存在 {for(int i=0;i<n;i++){cout<<a[i]<<" ";} }else cout<<"ERROR";cout<<endl;return 0;
}
/*
方法二:理解本质
首先,理解一下:
字典序如果在长度相等的序列中。
要逐位比较大小每次做这种题目,都很难脑补:
不妨先 列举 1,2,3的字典序排列吧
1,2,3
1,3,2
2,1,3
2,3,1
3,1,2
3,2,1再枚举1,2,3,4的
1,2,3,4
1,2,4,3
1,3,2,4
1,3,4,2
1,4,2,3
1,4,3,2
2,1,3,4
2,1,4,3
......
3,1,2,4
3,1,4,2
3,2,1,4
3,2,4,1
..... 举个例子,
拿1,4,2,3来说, (4的后面找一个(比4小的)最大的放在4的位置,其余的往后从大到小排****)
它的前一个是 1,3,4,2而对于 1,4,3,2来说 (3后面找一个最大的放在3的位置,....)
它的前一个是 1,4,2,3上述的例子第一个数都是1下面举个特殊的例子,第一个数字不一样的
比如2,1,3,4 (发生ai>ai+1 的 i是1,在第一个位置,说明上一个字典序的首元素不一样了)
前一个1,4,3,2 (第一个位置放比2小的最大的,后面的从大道小排)
[如果把上述第一个数字一样的,去掉第一个数字比如1,4,2,3=>1,3,4,2]
[就会变成,4,2,3=>3,4,2] 上述的例子都是一样的,在pos之后找一个比pos位置上的数小的最大的数
然后包括pos以及之后位置上的数从大到小排
*//*
7
4 3 2 6 1 5 7
输出:
4 3 2 5 7 6 1
*/#include <bits/stdc++.h>
using namespace std;
const int N=20;
int a[N];bool cmp(int a,int b)
{return a>b;
}
int main()
{int n;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];int pos=-1;for(int i=n;i>=2;i--){if(a[i]<a[i-1]){pos=i-1;break;}}if(pos==-1) puts("ERROR");else{int maxv2=-1;int pos2=-1;for(int i=pos+1;i<=n;i++){if(a[i]<a[pos]&&a[i]>maxv2){pos2=i;maxv2=a[i];}}swap(a[pos],a[pos2]);sort(a+1+pos,a+1+n,cmp);for(int i=1;i<=n;i++){cout<<a[i]<<" ";}cout<<endl;}return 0;
}
P2525 Uim的情人节礼物·其之壱 【字典序】【STL:prev_permutation】相关推荐
- 洛谷——P2525 Uim的情人节礼物·其之壱
P2525 Uim的情人节礼物·其之壱 题目描述 情人节到了,Uim打算给他的后宫们准备情人节礼物.UIm一共有N(1<=N<=9)个后宫妹子(现充去死 挫骨扬灰!). 为了维护他的后宫的 ...
- 洛谷:P2525 Uim的情人节礼物·其之壱
洛谷:P2525 Uim的情人节礼物·其之壱:题目链接 题解:利用C++的prev_permutation函数:可以求出给定数组的上一个字典序排序. #include <bits/stdc++. ...
- 【寒假每日一题】luogu P2525 Uim的情人节礼物·其之壱
题目链接:P2525 Uim的情人节礼物·其之壱 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 情人节到了,Uim打算给他的后宫们准备情人节礼物.UIm一共有N(1< ...
- [洛谷]P2525 Uim的情人节礼物·其之壱
这题我们只需要判断当前这个序列是否存在上一个字典序即可,这里可以用到一个叫做prev_permutation(a,a+n)的一个函数,它可以用来输出上一个序列,所以只需要用它判断一下是否存在上一个字典 ...
- 洛谷——P2524 Uim的情人节礼物·其之弐
P2524 Uim的情人节礼物·其之弐 题目描述 前传:详见洛谷P2525 Uim成功地按照顺序将礼物送到了N个妹子的手里并维持她们的和谐. Uim现在想知道,他最终选择的顺序是所有给N个妹子送礼顺序 ...
- Uim的情人节礼物·其之弐(洛谷-P2524)
题目描述 Uim成功地按照顺序将礼物送到了N个妹子的手里并维持她们的和谐. Uim现在想知道,他最终选择的顺序是所有给N个妹子送礼顺序中.字典序第几小的. 输入输出格式 输入格式: 第一行一个整数N, ...
- html玫瑰花效果代码,html5渲染3D玫瑰花情人节礼物js特效代码
情人节马上就要到来了,这里给程序员前端设计师们献上一个,html5渲染而成的3D玫瑰花js效果,可以作为虚拟的情人节礼物送给自己的爱人.支持html5的浏览器查看. 查看演示 下载资源: 16 次 下 ...
- 准备情人节礼物比写代码难?来看看IT直男给女友们的礼物
今天是情人节,据说IT直男在每个这样弥漫着恋爱气息的日子里都能把礼物送成"辣眼睛"现场,为了反(zheng)驳(shi)这个观点,小编特意走访了网易云的架构师.工程师.产品经理.程 ...
- 情人节礼物------用她的照片和我们的聊天记录生成词云~
用到的知识点 python读写文件 python正则表达式过滤无用信息 jieba分词与自定义字典 停用词筛选.统计词频 调用wordcloud绘制词云 第一步 从电脑版蛐蛐导出聊天记录.(手机一般不 ...
- 情人节 礼物TOP10
又是一年情人节,我的心又开始了那种熟悉的焦虑.也许你觉得像我这样一个男子汉如此矫情会让人受不了,但我却一点都不难为情,为了她,为了我的真心的爱. 于是,在这样的一个夜晚,我翻遍了内心的每一个角落,开始 ...
最新文章
- [4] 算法之路 - 插入排序之Shell间隔与Sedgewick间隔
- numpy.ma详解
- corosync+pacemaker+nfs提供mysql高可用
- 湖南大学第十五届程序设计竞赛
- 议rman的crosscheck和obsolete
- SpringBootAdmin监控信息讲解
- 下载丨58页PDF,云和恩墨技术通讯(2020年12月刊)
- 关于云主机拷贝复制资源异常的处理办法
- c语言使用位运算符包含头文件,C语言的运算符
- ubuntu 创建容器 并ssh 连接容器
- 前端特效-霓虹灯按钮
- OC学习笔记之011IOS应用开发入门--控件2进度条、拖动条、警告框、日期选择器、选择器
- mysql cmake ncursor_在移植的过程中主要会用到boost库、cmake工具以及wt库的编译。...
- 企业如何做好网址安全,防止入侵。
- Android水平仪实训报告,水准仪测量实训报告
- 【2016浴雨沐风】(第一篇)
- 在Linux中开机自动运行普通用户脚本程序
- 正点原子Alpha Linux开发板相关资料分享
- 我,程序员,告诉你年薪30万的程序员转行后,都去做什么工作了
- 计算机毕业设计SSM大学生项目众筹系统【附源码数据库】
热门文章
- 《啊哈,C语言》 第一章课后习题练习记录
- Python教学视频(九)math模块的使用
- 世界超级计算机比赛,【启明之星】何斌:刷新超级计算机比赛世界纪录
- 两个平面的位置关系和判定方程组解_精品获奖教案 1.2.4平面与平面的位置关系(2)教案 苏教版必修2...
- 前端 视频标签 video的一些特殊属性详解
- mcgs 云服务器,MCGS软件系统的组态环境和运行环境
- onenote导入html文件,OneNote加入:获取HTML内容
- ABC三类地址、子网掩码及子网划分
- 如何在没有原工程的情况下,利用vivado将bit文件转化成bin文件
- hi3559_imx334_sensor修改配置1080P60