例题6-2 铁轨(Rails,ACM/ICPC CERC,UVa 514)
程序员文章站
2022-05-28 15:18:40
...
原题链接:https://vjudge.net/problem/UVA-514
分类:栈
备注:水题
前言:回顾的时候以为很水,但没有想象的那么水,实现起来还是有点麻烦的,再多看看作者的代码,思考一下怎么写出优美的代码吧。
代码如下:
#include<cstdio>
#include<stack>
using namespace std;
const int maxn = 1000 + 5;
int N;
bool solve()
{
int a[maxn], cnt = 1, x = 1;
stack<int>tmp;
for (int i = 1; i <= N; i++)
{
scanf("%d", &a[i]);
if (!a[i])return false;
}
while (x <= N)
{
while ((tmp.empty() || tmp.top() != a[cnt]) && x <= N)
tmp.push(x++);
while (!tmp.empty() && tmp.top() == a[cnt])
tmp.pop(), cnt++;
}
if (tmp.empty())printf("Yes\n");
else printf("No\n");
return true;
}
int main(void)
{
while (scanf("%d", &N) == 1 && N)
{
while (solve());
printf("\n");
}
return 0;
}