链接:https://ac.nowcoder.com/acm/problem/14893
来源:牛客网

题目描述
给你一个1->n的排列和一个栈,入栈顺序给定
你要在不打乱入栈顺序的情况下,对数组进行从大到小排序
当无法完全排序时,请输出字典序最大的出栈序列
输入描述:
第一行一个数n
第二行n个数,表示入栈的顺序,用空格隔开,结尾无空格
输出描述:
输出一行n个数表示答案,用空格隔开,结尾无空格
示例1
输入
复制
5
2 1 5 3 4
输出
复制
5 4 3 1 2
说明
2入栈;1入栈;5入栈;5出栈;3入栈;4入栈;4出栈;3出栈;1出栈;2出栈
思路:对于数a[i],如果说它等于[i,n]之间的最大值,那么它就可以优先输出。如果说不等于的话,就说明[i,n]之间有比a[i]大的数字,那么就将a[i]保留下来。假如a[i]符合第一种情况,而保留的那个数组中第一个数x,大于a[i+1]的话,说明[i+1,n]没有比x大的了,这个时候要先输出x。

代码如下(用stack应该更好一些,这个题目我用的vector):

#include<bits/stdc++.h>
#define ll long long
using namespace std;const int maxx=1e6+100;
vector<int> p1,p2,p3;
int a[maxx];
int n;int main()
{scanf("%d",&n);int x;p1.push_back(0);for(int i=1;i<=n;i++) {scanf("%d",&x);p1.push_back(x);}a[n+1]=0;for(int i=n;i>=1;i--) a[i]=max(a[i+1],p1[i]);p3.push_back(0);for(int i=1;i<=n;i++){if(a[i]!=p1[i]) p2.push_back(p1[i]);else{p3.push_back(p1[i]);if(i+1<=n){while(p2.size()&&p2.back()>a[i+1]) p3.push_back(p2.back()),p2.pop_back();}}}while(p2.size()) p3.push_back(p2.back()),p2.pop_back();for(int i=1;i<=n;i++) cout<<p3[i]<<" ";return 0;
}

努力加油a啊,(o)/~

栈和排序(贪心+思维)相关推荐

  1. 牛客练习赛10 B栈和排序【思维】

    题目描述 给你一个1->n的排列和一个栈,入栈顺序给定 你要在不打乱入栈顺序的情况下,对数组进行从大到小排序 当无法完全排序时,请输出字典序最大的出栈序列 输入描述: 第一行一个数n 第二行n个 ...

  2. 贪心/思维题 UVA 11292 The Dragon of Loowater

    题目传送门 1 /* 2 题意:n个头,m个士兵,问能否砍掉n个头 3 贪心/思维题:两个数组升序排序,用最弱的士兵砍掉当前的头 4 */ 5 #include <cstdio> 6 #i ...

  3. 左神算法:用一个栈实现另一个栈的排序(Java版)

    本题源自左神<程序员面试代码指南>"用一个栈实现另一个栈的排序"题目. 题目 在一个栈中元素的类型为整型,现在想将该栈从栈顶到栈底按从大到小的顺序排序,只许申请一个栈, ...

  4. 栈和队列之用一个栈实现另一个栈的排序

    用一个栈实现另一个栈的排序 题目: 一个栈元素的类型为整数,现在要想将该栈从顶到底按从大到小的顺序排列,只允许申请一个栈,除此之外, 可以申请一个变量,可以申请额外的变量,但是不能申请额外的数据结构, ...

  5. 牛客题霸 [栈和排序] C++题解/答案

    牛客题霸 [栈和排序] C++题解/答案 题目描述 给你一个1->n的排列和一个栈,入栈顺序给定 你要在不打乱入栈顺序的情况下,对数组进行从大到小排序 当无法完全排序时,请输出字典序最大的出栈序 ...

  6. 1450F The Struggling Contestant(贪心+思维)

    1450F The Struggling Contestant(贪心+思维) Codeforces Global Round 12 F. The Struggling Contestant 题面:Th ...

  7. cf:B. Patchouli‘s Magical Talisman【数学贪心思维 + 奇偶分析】

    分析 给出一堆数 可以通过相加或除2让它们全部变成奇数 如果全奇数返回0 由于奇数 + 偶数 = 奇数 所以只要有一个奇数就能把偶数和它相加不停的变成奇数 所以只要存在奇数,就可以返回偶数的个数 否则 ...

  8. 【左程云Java算法】Chapter1-5:用一个栈实现另一个栈的排序

    [左程云Java算法]Chapter1-5:用一个栈实现另一个栈的排序 [题目] 用一个栈实现另一个栈的排序 [要求] 一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排序,只许申请一个 ...

  9. NC14893 栈和排序

    题目: NC14893 栈和排序 ,哈哈,我们今天来看一道比较简单的数据结构题嘛,这是选自牛客上的一道题,好了,我们一起来看看题意吧: 考虑到直接复制题目,或者截屏的方式不是很方便阅读,我就把直接题目 ...

最新文章

  1. 等同于JavaScript isset()
  2. 8.2-3 partprobe、tune2fs
  3. linux 系统 权限
  4. android.os.NetworkOnMainThreadException问题
  5. 好程序员web前端教程:字符串
  6. imu传感器工作原理_各种传感器工作原理汇总
  7. html5输入框点击后消除高光,请问(VR渲染)光域网的灯光怎么把“高光”去掉?...
  8. thinkpad 开启虚拟服务器,ThinkPad笔记本怎么开启处理器虚拟化技术
  9. linux tar 打包排除指定目录
  10. 【华为云技术分享】“技术-经济范式”视角下的开源软件演进剖析-part 2
  11. 代码审计之企业级进销存管理系统
  12. 【转载】7个最佳的双因素认证解决方案
  13. WebStorm中TODO的作用
  14. 如何绘制论文中的图表
  15. PHP 中的 cURL 爬虫实战基础
  16. python拼音名_Python汉字转换成拼音
  17. burpsuite激活
  18. ICON艾肯VST声卡驱动官方原版新款ProDriver-4.0.1全系列下载安装教程
  19. Arduino按键控制MP3模块随机播放音乐(YX5300 MP3音乐模块)
  20. ESP32 web WiFi 管理器esp32-wifi-manager

热门文章

  1. IOS之截取特定字符串
  2. mysql代表单个字符_mysql字符编码以及字符序
  3. 太阳能计算机作文500字,自制太阳能热水器
  4. actorx importer 下载_红色新店开业无线端PSD模板_psd素材免费下载_ 640*6001像素(编号:13631922)...
  5. python的线性链表_Python线性表——单链表-阿里云开发者社区
  6. 光纤收发器的原理及应用_光纤收发器的几种常规应用
  7. php通用下载方法,php实现当前页面点击下载文件的简单方法
  8. 网络设置巨形帧_网络工程师笔记:VLAN技术
  9. 计算机理论专业研究生论文课题,计算机理论方向论文选题 计算机理论论文标题如何定...
  10. Gartner公布2017年十大战略科技发展趋势