思路:定义一个栈,将火车一个个放入栈中,直到出现一个火车(该火车要先出去),等所有火车都进入完栈,并且都出完栈,返回yes+方法,否则返回no;
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int n;
char in[20];
char out[20];
char z[20]; //栈
int len;
int i;
int x;
int flag[50]; //记录步数
int t;
int y; //栈顶(不要定义成0,防止对下面产生影响) (定义成0稍有不慎就会产生两次循环同一个值)
while(scanf("%d %s %s",&n,in,out)!=EOF)
{
len=strlen(in);
x=0;
t=0;
y=-1;
for(i=0;i<len;i++)
{
z[++y]=in[i]; //让车队一个个进入车站
flag[t++]=1; //记录步数;
while(y!=-1 && z[y]==out[x])
{
y--;
x++;
flag[t++]=-1;
}
}
if(x==len)
{
printf("Yes.\n");
for(i=0;i<t;i++)
{
if(flag[i]==1)
printf("in\n");
if(flag[i]==-1)
printf("out\n");
}
printf("FINISH\n");
}
else
{
printf("No.\nFINISH\n");
}
}
return 0;
}