题目链接:https://www.luogu.org/problemnew/show/UVA514
分析:
入站序列是1-n,入站后判断如果等于出站序列的当前值,则直接出站。否则就在栈里待着不动。模拟即可,可以选择使用STL栈或手写。
代码:
#include<cstdio>
#include <cstring>
#include<stack>
using namespace std;
int a[1005],n,cnt,bh,pd;
int main()
{
while(scanf(\"%d\",&n)&&n!=0)
{
stack<int> s;
while(1)
{
scanf(\"%d\",&a[1]);
if(a[1]==0) break;
for(int i=2;i<=n;i++)
{
scanf(\"%d\",&a[i]);
}
cnt=bh=pd=1;
while(bh<=n)
{
if(cnt==a[bh])
{
cnt++;
bh++;
}
else if(!s.empty()&&s.top()==a[bh])
{
s.pop();
bh++;
}
else if(cnt<=n) s.push(cnt++);
else
{
pd=0;
break;
}
}
printf(\"%s\\n\",pd?\"Yes\":\"No\");
}
printf(\"\\n\");
}
return 0;
}
撒花~
继续阅读与本文标签相同的文章
上一篇 :
这样清理苹果手机内存,速度流畅好几倍,太好用了
下一篇 :
GPS-RTK测量技术的不足处和解决的方案
-
绑手指、蒙布也能行,OpenAI让机器人单手还原魔方
2026-05-18栏目: 教程
-
斩获三个“全国第一”,漳州有一家“隐形冠军”企业
2026-05-18栏目: 教程
-
经历8个月改造,岗顶百脑汇“转型回归”
2026-05-18栏目: 教程
-
ROKU流媒体聚合平台终将变革电视机操作系统和流媒体的观看方式
2026-05-18栏目: 教程
-
权威报告:中国专利申请连续8年居首,占世界一半
2026-05-18栏目: 教程
