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.\n");else{printf("Yes.\n");for(int i=1;i<=k;i++)if(a[i])printf("in\n");elseprintf("out\n");}printf("FINISH\n");}return 0; }