题目链接:Train Problem I
解题思路:水题,就是进栈顺序,看出栈顺序合法不合法,合法输出进出栈过程。不合法就NO。感觉代码写残了。用的是STL。。。。。
#include<cstdio>
#include<iostream>
#include<stack>
#include<vector>
#define MAX 10
using namespace std;
stack<char> ms;
vector<int> ans;
int n;
char o1[MAX], o2[MAX];
void init(){
ans.clear();
while(!ms.empty()){
ms.pop();
}
}
int main(){
int i, j, k;
int tot;
bool flag;
while(~scanf("%d%s%s", &n, &o1, &o2)){
init();
tot = 0;
flag = true;
for(i = 0; i < n; i++){
if(!flag) break;
if(ms.empty() || ms.top() != o2[i]){
while(tot < n){
ms.push(o1[tot++]);
ans.push_back(1);
if(ms.top() == o2[i]){
break;
}
}
if(ms.top() == o2[i]){
ms.pop();
ans.push_back(0);
continue;
}
else{
flag = false;
}
}
else{
ms.pop();
ans.push_back(0);
}
}
if(flag){
puts("Yes.");
for(i = 0; i < ans.size(); i++){
if(ans[i] == 1){
puts("in");
}
else{
puts("out");
}
}
}
else{
puts("No.");
}
puts("FINISH");
}
return 0;
}