欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

例题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;
}
相关标签: # 第六章