UVA514 - Rails(栈)

来源:互联网 发布:galgame转区软件 编辑:程序博客网 时间:2024/04/29 21:54

题目:UVA514 - Rails(栈)


题目大意:某城市有一个火车站,铁轨成Y字形,有n节车厢从A方向驶入车站,按进站顺序编号1-n,现在给你一个序列代表进入B的顺序,你可以借助一个C中转站,问能否可以按这样的序列驶入B。


解题思路:栈模拟,中转站就代表栈,将车厢入栈后,只能从栈顶一个一个出去。注意输出每个cas都有一个空行。


代码:

#include <cstdio>#include <cstring>#include <stack>using namespace std;const int N = 1005;int tail[N], n;stack<int> s;bool ok () {while (!s.empty()) {s.pop();}int k = 1;int p = 0;while (k <= n && p < n) {if (k == tail[p]) {p++;k++;} else if (!s.empty() && s.top() == tail[p]) {s.pop();p++;} else {s.push (k);k++;}}while (!s.empty() && p < n) {if (s.top() == tail[p]) {s.pop();p++;} elsebreak;}if (p == n)return true;return false;}int main () {bool flag;while (scanf ("%d", &n) && n) {flag = 1;while (1) {for (int i = 0; i < n; i++) {scanf ("%d", &tail[i]);if (!tail[i]) {flag = 0;break;}}if (!flag)break;printf ("%s\n", ok() ? "Yes": "No");}printf ("\n");}return 0;}


0 0
原创粉丝点击