http://acm.split.hdu.edu.cn/showproblem.php?pid=1022
题意:给出火车的进站与出站顺序,判断是否可以按照给出的出站顺序出站。
#include <iostream> #include <stdio.h> #include <string.h> #include <string> #include <vector> #include <algorithm> #include <map> #include <queue> #include <stack> #include <math.h> using namespace std; #define INF 0x3f3f3f3f const int maxn = 600; typedef long long LL; int main() { int n; int a[100]; char str1[100], str2[100]; while(scanf("%d%s%s", &n, str1, str2)!=EOF) { stack<char>Q; Q.push(str1[0]); memset(a, 0, sizeof(a)); a[1] = 1; int i=0; int j=0; int k=1; while(i<n && j<n) { if(Q.size() && Q.top()==str2[j]) { a[++k]=0; Q.pop(); j++; } else { Q.push(str1[++i]); a[++k]=1; } } if(k!=2*n) printf("No. "); else { printf("Yes. "); for(int i=1;i<=k;i++) if(a[i]) printf("in "); else printf("out "); } printf("FINISH "); } return 0; }