这是以前写的解题报告吧,虽然很简单....还是贴出来吧,毕竟自己也是从菜鸟一步一步走过来的.....
#include <iostream>
#include <stack>
using namespace std;
int main()
{
stack<char>s;
int n;
char a[100],b[100];
while(cin>>n>>a>>b)
{
int i=1,j=0,flag[100],k=1;
s.push(a[0]);
flag[0]=0;
while(i<n+1&&j<n)
{
if(s.size()!=0&&s.top()==b[j])
{
j++;
s.pop();
flag[k++]=1;
}
else
{
if(i==n+1) break;
s.push(a[i++]);
flag[k++]=0;
}
//cout<<i<<endl;
}
//cout<<i<<" "<<j<<endl;
if(i==n+1)
cout<<"No.\n";
else
{cout<<"Yes.\n";
for(i=0;i<k;i++)
if(flag[i]==1)
cout<<"out\n";
else
cout<<"in\n";}
cout<<"FINISH\n";
}
return 0;
}
// hdu1022
这题算是我做的第一道栈的题目,之前看过栈的一些内容
做这道题的时候,可以模拟出过程,但是具体的代码不会写。。。
所以决定练习一些栈和队列的问题,大概思路就是有三个数组和一个栈
先把第一个数组的第一个元素放进栈里,每次判断第二个数组和栈顶元素是否相等
如果相等就弹出,如果不相等就压入,大概就是这个思路。。。。