概述
现在有n个数字依次进入一个栈,每个数字a进入栈的时候,如果栈顶元素小于a,则会将栈顶元素弹出,新的栈顶元素如果仍然小于a,则会将新的栈顶元素继续弹出,直到栈顶元素大于等于a为止,a才会加入栈。问n个数字依次进入后,最后栈里的数字依次是?
收起
输入
输入第一行一个整数n(n<=100000),表示有n个数字依次进入栈。 接下来n行,每行一个整数,表示第i个数字。
输出
若干行,表示最后栈中的数字。
输入样例
5 5 3 2 4 1
输出样例
5 4 1
思路:就是STL的简单应用吧,之前有一篇关于stack的详细介绍打开链接
#include<cstdio>
#include<stack>
#include<vector>
#include <iostream>
using namespace std;
const int N = 100005;
int arr[N];
int main()
{
stack<int > s;
int n;
scanf("%d", &n);
while(n--)
{
int a;
scanf("%d", &a);
while(!s.empty() && s.top() < a)
{
s.pop();
}
s.push(a);
}
int i = 0;
while(!s.empty())
{
arr[i++] = s.top();
s.pop();
}
for(i = i - 1; i >= 0; --i)
printf("%dn", arr[i]);
return 0;
}
最后
以上就是洁净鱼为你收集整理的51nod2160 数字游戏【栈】输入输出输入样例输出样例的全部内容,希望文章能够帮你解决51nod2160 数字游戏【栈】输入输出输入样例输出样例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复