用到的一些栈的东西:
<stack>类文件中的函数
stack<int>p;定义一个int型的栈p
p.push(x)向栈中压入一个元素x
p.top()取栈顶元素的值
p.pop()弹出栈顶元素
p.empty()清空栈
isEmpty()判断栈是否为空
#include<stdio.h> #include<stack> using namespace std; int main() { int n,i,j,b[200],k; char o1[100],o2[100]; stack<char>p; p.push('s');//提前在栈的底部添加一个元素 while(scanf("%d",&n)!=-1) { stack<char>p; p.push('s'); scanf("%s %s",o1,o2); i=0;j=0;k=0; while(i<n&&j<=n)/*一定是i<n,因为最后一个出栈后会是i=n,如果是i<=n的话就会继续把后面的\0进栈之后才终止*/ { if(o2[i]==p.top()) { i++; p.pop(); b[k++]=0;//1代表进栈0代表出栈 } else { p.push(o1[j]); j++; b[k++]=1; } } if(p.top()=='s') { printf("Yes.\n"); for(i=0;i<n*2;i++) { if(b[i]==0) printf("out\n"); else printf("in\n"); } printf("FINISH\n"); } else { printf("No.\n"); printf("FINISH\n"); } while(p.top()!='s') p.pop(); } return 0; }