POJ 1363 Rails

Posted lipeiyi520

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ 1363 Rails相关的知识,希望对你有一定的参考价值。

技术图片

技术图片

解题思路:

本题是一道模拟,我们先构造一个栈,将1~n入栈,并用一个标记来表示当前比较到了所给序列的那一个元素.如果要入栈的元素与我们当前所标记的元素相同,则比较栈顶与我们下一个要标记到的元素,直到栈为空或这两个元素不相同为止,更新标记,接着循环直到1~n全部入栈.如果栈为空,则说明"Yes",如果不为空,我们就比较栈顶和标记元素,如果相同,就弹出栈顶;最后如果能做到栈为空则说明"Yes",否则为"No".

AC代码:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <algorithm>
 4 #include <stack>
 5 
 6 using namespace std;
 7 const int N = 1e5+5;
 8 
 9 int n, a[N];
10 
11 bool solve() {
12     stack<int> st;
13     int p = 1;//p为标记 
14     for(int i=1; i<=n; i++) {
15         while(true) {
16             if(p <= n && a[i] == p) {
17                 p++;
18                 break;
19             }
20             else if(!st.empty() && a[i] == st.top()) {
21                 st.pop();
22                 break;
23             }
24             else {
25                 if(p <= n) st.push(p++);
26                 else return false;
27             }
28         }
29     }
30     return true;
31 }
32 
33 int main() {
34     while(cin >> n && n) {
35         while(true) {
36             cin >> a[1];
37             if(a[1] == 0) break;
38             for(int i=2; i<=n; i++) cin >> a[i];
39             cout << (solve() ? "Yes" : "No") << "
";
40         }
41         puts("");
42     }
43 }

 

以上是关于POJ 1363 Rails的主要内容,如果未能解决你的问题,请参考以下文章

poj 1363 Rails (栈的应用+STL)

POJ 1363 Rails

百练 1363.Rails

POJ_1363_模拟

以下代码片段是不是容易受到 Rails 5 中 SQL 注入的影响?

POJ3614 Sunscreen 贪心