这是HDOJ上的1022题,解答这道题有两种方法,一是用C++中的栈,还有一种是直接用数组模拟栈。
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<stack>
#include<algorithm>
using namespace std;
char a[10],b[10];
int main()
{
int t;
while(~scanf("%d",&t))
{
getchar();
int i;
int j=0;
scanf("%s%s",a,b);
getchar();
stack<char>c;
for(i=0,j=0;i<t;i++)
{
c.push(a[i]);
while(!c.empty()&&c.top()==b[j])
{
c.pop();
j++;
}
}
if(c.size()==0)
{
printf("Yes.\n");
for(i=0,j=0;i<t;i++)
{
c.push(a[i]);
printf("in\n");
while(!c.empty()&&c.top()==b[j])
{
c.pop();
printf("out\n");
j++;
}
}
}
if(c.size()!=0)
{
printf("No.\n");
}
printf("FINISH\n");
}
return 0;
}