hdu 1022 Train Problem I STL--栈的应用
数据结构中典型的用栈解决的问题直接调用c++ STL模板库中的栈就可以解决了
栈
#include<iostream> #include<stack> using namespace std; // 栈的五种操作 stack <char> my; //定义栈 my.empty() ; // 判断栈是否非空 my.size(); // 判断栈中元素的个数 my.push(a[i]); // 压栈 my.top(); // 取出栈顶元素 my.pop(); // 弹出栈顶元素 下面是解题代码 post code: #include<stdio.h> #include<iostream> #include<stack> #include<string.h> using namespace std; stack<char> my; char a[20]; char b[20]; char c[200][20]; char in[20]="in"; char out[20]="out"; int main() { int n,i,ch,j,k; while(scanf("%d",&n)!=EOF) { while(my.empty()==0) my.pop(); scanf("%s",a); scanf("%s",b); j=k=0; for(i=0;i<n;i++) { my.push(a[i]); strcpy(c[j],in); j++; while((my.size()!=0)&&(ch=my.top())) //如果栈中无元素 跳出 { if(ch==b[k]){my.pop();k++;strcpy(c[j],out);j++;} //如果有数组 a 和b 相等则a栈顶元素出栈 else break; //b 元素向后退一个 若不相等跳出循环 } //c 数组记录进栈和出栈情况 } if(my.size()!=0)printf("No.\nFINISH\n"); else { printf("Yes.\n"); for(i=0;i<j;i++) printf("%s\n",c[i]); printf("FINISH\n"); } } }