题目大意:现在只有1个火车站,有1~9至多9辆火车需要停站,只有前面的火车出去了后面的才能出去。输入火车数量,每辆火车的编号,火车的出站顺序,问能否按输入的出站顺序出站?
栈的运用,可以用数组模拟。
#include <stdio.h>
#include <string.h>
int main()
{
char f[10]//火车编号,f_[10]//出站顺序,stack[10]//模拟栈;
int num[20]//临时标记,n,i,j,k,l;
while(scanf("%d",&n)!=EOF)
{
memset(f,'0',sizeof(f));
memset(f_,'0',sizeof(f_));
memset(stack,'0',sizeof(stack));
memset(num,0,sizeof(num));
getchar();
for(i=0;i<n;i++)
{
scanf("%c",&f[i]);
}
getchar();
for(i=0;i<n;i++)
{
scanf("%c",&f_[i]);
}
getchar();
j=k=l=0;
for(i=0;i<n;i++)
{
stack[k]=f[i];
l++;
while(stack[k]==f_[j])
{
num[l]=1;
j++;
k--;
l++;
}
k++;
}
if(num[2*n-1]==1)
{
printf("Yes.\n");
for(i=0;i<2*n;i++)
{
if(num[i]==0)
printf("in\n");
else
printf("out\n");
}
}
else
printf("No.\n");
printf("FINISH\n");
}
return 0;
}