栈学的不是很好,发现现在又不会了,拿这个经典题目来练练手~~
这里要注意的就是,i和j的细节控制。
#include <iostream>
#include <stack>
#include <cstring>
using namespace std;
char a[1010],b[1010];
int p[1010]; //0进,1出;
int main()
{
int n;
while(cin>>n>>a>>b)
{
int i(0),j(0),k(0);
stack <char >s;
memset(p,0,sizeof(p));
while(i<=n&&j<n)
{
if(s.empty()||s.top()!=b[j])
{
s.push(a[i++]);
p[k++]=0;
}
if(s.top()==b[j])
{
s.pop();
j++;
p[k++]=1;
}
}
if(s.empty())
{
cout<<"Yes."<<endl;
for( i=0;i<k;i++)
{
if(!p[i])
cout<<"in"<<endl;
else cout<<"out"<<endl;
}
}
else cout<<"No."<<endl;
cout<<"FINISH"<<endl;
}
return 0;
}