題意:有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; }