?
题意:有n辆火车,给出入栈和出栈的顺序,编写程序判段出栈是否正确。
样例:3 123 132 是可以的
?
#include
#include
#include
using namespace std; int main(int argc, char *argv[]) { int n; char in[10],out[10]; stack
s; int sign[20];//尽量大点,标记:1代表入栈,0代表出栈 while(cin >> n >> in >> out) { memset(sign,0,sizeof(sign)); //保证测试每组数据前都是空栈 while(!s.empty()) { s.pop(); } int j = 0,k = 0; for(int i = 0;i < n;i++) { s.push(in[i]); sign[k++] = 1; while(!s.empty() && j < n)//空栈和出栈顺序访问完了 { if(s.top() != out[j]) { break; } else { s.pop(); sign[k++] = 0; j++; } } } if(s.empty()) { cout << Yes. << endl; for(int i = 0;i < k;i++)//i < n会WA ,k是 “in” 和 “out ” 的总次数 { if(sign[i] == 1) cout << in << endl; else cout << out << endl; } cout << FINISH << endl; } else cout << No. << endl << FINISH << endl; } return 0; }
?
?