hdu 1022
这是以前写的解题报告吧,虽然很简单....还是贴出来吧,毕竟自己也是从菜鸟一步一步走过来的.....
#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
这题算是我做的第一道栈的题目,之前看过栈的一些内容
做这道题的时候,可以模拟出过程,但是具体的代码不会写。。。
所以决定练习一些栈和队列的问题,大概思路就是有三个数组和一个栈
先把第一个数组的第一个元素放进栈里,每次判断第二个数组和栈顶元素是否相等
如果相等就弹出,如果不相等就压入,大概就是这个思路。。。。