Problem Description
Input
The input contains several test cases. Each test case consists of an integer, the number of trains, and two strings, the order of the trains come in:O1, and the order of the trains leave:O2. The input is terminated by the end of file.
More details in the Sample Input.
Output
The output contains a string "No." if you can't exchange O2 to O1, or you should output a line contains "Yes.", and then output your way in exchanging the order(you should output "in" for a train getting into the railway, and "out"
for a train getting out of the railway). Print a line contains "FINISH" after each test case. More details in the Sample Output.
Sample Input
Sample Output
Yes.
in
in
in
out
out
out
FINISH
No.
FINISH
代碼:
#include<stdio.h>
char stack[10000];
int top;
void Push(charc)
{
stack[top++]=c;
}
void Pop()
{
top--;
}
char Top()
{
return stack[top-1];
}
bool Empty()
{
if(top==0)
return true;
return false;
}
int main()
{
int n=0;
while(~scanf("%d",&n))
{
top=0;
int i=0,j=0,k=0;
char in[10000],out[10000],step[10000];
scanf("%s%s",in,out);
while(i<n)
{
Push(in[i++]);
step[k++]='i';
while(!Empty()&&Top()==out[j])
{
Pop();
j++;
step[k++]='o';
}
}
if(Empty())
{
printf("Yes.\n");
for(i=0;i<k;i++)
{
if(step[i]=='i')
printf("in\n");
else
printf("out\n");
}
}
else
printf("No.\n");
printf("FINISH\n");
}
return 0;
}