POJ 1363 Rails(stack)


题目链接:http://poj.org/problem?id=1363

       题意就是有1-n的编号的车要进站,问能不能按输入的方式出站,能的话输出Yes,否则输出No。

       思路就是用栈模拟,看一下代码就能理解了,就是输入输出有点麻烦...


AC代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <stack>
using namespace std;
int n;
int pre[1005];
int flag;

int main()
{
	while(~scanf("%d",&n) && n){
		if(flag == 1)printf("\n");
		flag = 0;
		while(~scanf("%d",&pre[1]) && pre[1]){
			for(int i=2;i<=n;i++){
				scanf("%d",&pre[i]);
			}
			int num = 1;
			stack<int> s;
			for(int i=1;i<=n;i++){
				s.push(i);
				while(!s.empty() && s.top() == pre[num]){
					num++;
					s.pop();
				}
			}
			if(s.empty())printf("Yes\n");
			else{
				printf("No\n");
			}
		}
		flag = 1;
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/charles_zaqdt/article/details/80988181