nyoj 寻找最大数(二)
寻找最大数(二)
- 描述
-
给你一个数字n(可能有前缀0)。
要求从高位到低位,进行 进栈出栈 操作,是最后输出的结果最大。
- 输入
- 有多组测试数据。
对于每组数据,输入一个n(0<=n<=10^100). - 输出
- 输出栈操作后的结果。
- 样例输入
-
789 75948
- 样例输出
-
987 98457
思路:
贪心+栈;先找到最大的数字输出,然后再判断s1[n+1]位置的数字是否比栈顶的元素的数字大,(,要想输出的数值最大,每一位的数值都尽可能大的因为s[n+1]中存放的数字是后面的数字中最大的,语言可能能表达的有点不通顺......),如果不大,证明栈顶元素为后面元素中最大的,
输出栈顶元素,然后将栈顶元素弹出,此时栈顶元素的下一位置成为栈顶 ,在判断,,,重复上述步骤,所有元素都判断完了,将栈里面的元素按顺序输出,(也就是进栈的顺序,数字的顺序。。。)#include <iostream>,
#include <stack>
#include <cmath>
using namespace std;int main()
{
string s,s1;
stack <char>sta;
while(cin>>s)
{
s1=s;//算是一个标记数组,记录当前位置的数值为后面的位置(包含当前位置)的最大值
for(int i=0;i<s.length();i++)
for(int j=i;j<s.length();j++)
s1[i]=max(s1[i],s[j]);
for(int i=0;i<s.length();i++)//遍历整个字符串,求出最大的数
{
if(s[i]==s1[i])//如果当前的数值在后面的数值中为最大的
{
cout<<s[i];
while(!sta.empty()&&sta.top()>=s1[i+1])//判断栈顶的元素是否比下一个位置的数值大
{
cout<<sta.top();
sta.pop();
}
continue;//数字已经输出,不用再进栈
}
sta.push(s[i]);
}
while(!sta.empty())
{
cout<<sta.top();
sta.pop();
}
cout<<endl;
}
return 0;
}
nyoj 寻找最大数(二)的更多相关文章
- NYOJ-851寻找最大数(二),栈贪心!
寻找最大数(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 给你一个数字n(可能有前缀0). 要求从高位到低位,进行 进栈出栈 操作,是最后输出的结果最大. 输入 ...
- nyoj 寻找最大数
寻找最大数 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920813467185 ...
- nyoj 448 寻找最大数(贪心专题)
寻找最大数 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920813467185 ...
- nyoj 448 寻找最大数
寻找最大数 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920813467185 ...
- 寻找最大数--nyoj题目448
寻找最大数 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920813467185 ...
- ACM 寻找最大数
寻找最大数 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920813467185 ...
- NYOJ-1057 寻找最大数(三)(贪心)
寻找最大数(三) 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 给出一个整数N,每次可以移动2个相邻数位上的数字,最多移动K次,得到一个新的整数. 求这个新的整数的 ...
- NYOJ-448 寻找最大数(贪心)
NYOJ-448 寻找最大数 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920 ...
- AKOJ -- 1529 -- 寻找最大数
1529: 寻找最大数 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 107 Solved: 53 上一题SubmitStatus标签打分编辑题目信 ...
随机推荐
- 【Luogu1973】仓配置(贪心,线段树)
[Luogu1973]仓配置 题面 直接找洛谷把... 题解 很明显的贪心吧 按照线段的右端点为第一关键字,左端点第二关键字排序 然后线段树维护区间最小就可以啦 #include<iostrea ...
- [Luogu3676]小清新数据结构题
题面戳我 题意:给一棵树,树上有点权,每次操作为修改一个点的点权,或者是询问以某个点为根时,每棵子树(以每个点为根,就有n棵子树)点权和的平方和. \(n\le2*10^5\),保证答案在long l ...
- [UVA 10529]Dumb Bones
题面在这里 题意 放\(n\)个相连的骨牌,每次放的时候有\(pl\)的概率往左倒,有\(pr\)的概率往右倒,骨牌倒的时候可能会打翻左边相邻或者右边相邻的骨牌,并引起连锁反应直到最后一个骨牌旁边没有 ...
- 【ZJOI2010】网络扩容
费用流+最大流 先一遍最大流 再所有边扩容,新加节点限制扩容量k # include <bits/stdc++.h> # define IL inline # define RG regi ...
- 原生jdbc操作mysql数据库详解
首先给大家说一下使用JDBC链接数据库的步骤 1.加载链接数据库驱动 2.建立数据库链接 3.创建数据库操作对象 4.编写sql语句,执行sql语句 5.获取结果集 6.释放资源 我这边采用的是mav ...
- 巧用UserAgent来解决浏览器的各种问题
以前对UserAgent了解不是很透彻,今天发现UserAgent用处多多.比如我之前一直很喜欢用火狐浏览器,不过用了那么久发现火狐浏览器问题多多,比如有的论坛上传附件或者上传图片等按钮没有作用,并且 ...
- ps智能对象
- UML系列图2
时序图: 用例图:
- [Luogu 1395] 会议
题目 Description 有一个村庄居住着n个村民,有n-1条路径使得这n个村民的家联通,每条路径的长度都为1.现在村长希望在某个村民家中召开一场会议,村长希望所有村民到会议地点的距离之和最小,那 ...
- STL --> 高效使用STL
高效使用STL 仅仅是个选择的问题,都是STL,可能写出来的效率相差几倍: 熟悉以下条款,高效的使用STL: 一.当对象很大时,建立指针的容器而不是对象的容器 1)STL基于拷贝的方式的来工作,任 ...