51 nod 1255 字典序最小的子序列
来源:互联网 发布:淘宝恶意举报假货 编辑:程序博客网 时间:2024/05/13 11:53
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1255
思路:
分三种情况:
1:栈空,直接将字母压入。
2:栈非空,当前字母大于栈顶元素,栈中未出现该字母,压入栈。
3:栈非空,当前字母小于栈顶元素,栈中未出现该字母,执行循环:栈顶元素大于当前字母,且后面还存在栈顶元素,弹出栈顶元素。最后压入当前字母。
#include<iostream>#include<stack>#include<cstring>#include<stdio.h>#include<algorithm>#define maxn 100005using namespace std;int coun[27];bool juge[27];char s[maxn];int main(){ scanf("%s",s); int len=strlen(s); for(int x=0;x<27;x++) coun[x]=0,juge[x]=0; for(int x=0;x<len;x++) coun[s[x]-'a']++; stack<char>s1,s2; for(int x=0;x<len;x++) { coun[s[x]-'a']--; if(s1.empty()) s1.push(s[x]),juge[s[x]-'a']=1; else if(s[x]>s1.top()&&juge[s[x]-'a']==0&&!s1.empty()) s1.push(s[x]),juge[s[x]-'a']=1; else if(!s1.empty()&&s[x]<s1.top()&&juge[s[x]-'a']==0) { while(!s1.empty()&&s[x]<s1.top()&&coun[s1.top()-'a']>0) juge[s1.top()-'a']=0,s1.pop(); s1.push(s[x]);juge[s1.top()-'a']=1; } } while(!s1.empty()) { s2.push(s1.top()); s1.pop(); } while(!s2.empty()) { printf("%c",s2.top()); s2.pop(); } printf("\n");}
阅读全文
0 0
- 51nod 1255 字典序最小的子序列
- 51nod-1255 字典序最小的子序列
- 51nod 1255 字典序最小的子序列
- 【51Nod 1255】字典序最小的子序列
- 51nod 1255 字典序最小的子序列【贪心】
- 51nod 1255 字典序最小的子序列 []【贪心】
- 51NOD 1255 字典序最小的子序列 【贪心】
- 51nod 1255 字典序最小的子序列(贪心)
- 51 nod 1255 字典序最小的子序列
- 51nod 1255 字典序最小的子序列(贪心)
- 51 nod 1255 字典序最小的子序列
- 51nod 1255 字典序最小的子序列 贪心
- 51nod 1255 字典序最小的子序列 神奇的栈用法
- 51Nod-1255-字典序最小的子序列
- 51nod -1255 字典序最小的子序列(贪心)
- 51 nod 1255 字典序最小的子序列(单调栈 贪心)
- 1255 字典序最小的子序列
- 字典序最小的子序列
- 目标文件
- [读书笔记]第六章 对付小偷 咳嗽通常比菜刀好
- css布局实例之去除行内元素间的空白间隙
- Java EE开发第十一章:2.初始servlet
- 哈哈笔记之链表
- 51 nod 1255 字典序最小的子序列
- Android Eclipse JNI开发示例
- LeetCode-Combination Sum
- tomcat启动时报:IOException while loading persisted sessions: java.io.EOFException的解决方案
- shell 快捷键 超提高命令行,输入效率!
- UVALive
- VS外接程序VMDebugger未能加载或导致了异常
- caffe基础-14cifar10数据集的训练
- HDOJ1042(高精度阶乘 JAVA)