题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19641
#include <iostream> #include <stack> using namespace std; /************************************************************************************************************* 题意:给定两个序列A,B,判断B是否可由A经过进站出站得到 思路: 1,利用栈模拟,将可以的情况写出来 2,注意按要求输入输出 *************************************************************************************************************/ int a[1005]; int main() { int n; while(cin>>n,n!=0) { while(cin >> a[1] && a[1]){ stack<int> s; for(int i = 2;i <= n;i ++) cin>>a[i]; int A=1,B=1,flag=1; while(B <= n){ if(A == a[B]){ A++; B++; } else if(!s.empty() && s.top() == a[B]){ s.pop(); B++; } else if(A <= n) s.push(A++); else{ flag=0; break; } } cout<< (flag ? "Yes" : "No") << endl; } cout<<endl; } return 0; }