思路
按照他所说的规则,模拟一遍,用一个栈作为媒介。
代码
#include <cstdio>
#include <vector>
#include <string>
#include <stack>
using namespace std;
char A[10];
char B[10];
int main()
{
int len, a, b;
vector<string> output;
stack<char> temp;
while(scanf("%d", &len)==1)
{
scanf("%s%s", B, A);
// 初始化数据
a = b = 0;
output.clear();
while(!temp.empty()) temp.pop();
bool flag = true;
while(a<len)
{
// 从 B 到 A
if(B[b]==A[a])
{
a++;
b++;
output.push_back("in");
output.push_back("out");
}
// 从栈到 A
else if(!temp.empty() && temp.top()==A[a])
{
temp.pop();
a++;
output.push_back("out");
}
// 从 B 到栈
else if(b<len)
{
temp.push(B[b]);
output.push_back("in");
b++;
}
// 失败退出
else
{
flag = false;
break;
}
}
if(flag)
{
printf("Yes.\n");
for(int i=0; i<output.size(); i++) printf("%s\n", output[i].c_str());
printf("FINISH\n");
}
else
{
printf("No.\n");
printf("FINISH\n");
}
}
return 0;
}