DS線性結構—火車問題 (Ver. I)
阿新 • • 發佈:2018-11-09
題目描述
某火車站只有一條鐵軌供火車停靠,所有的列車都從一側進入,從另一側出來。如果此時,列車A首先進入鐵路,然後列車B在列車A離開之前進入鐵路,則列車A不能離開,直到列車B離開(如下圖所示)。車站最多有9列火車,所有火車都有一個ID(編號從1到n),列車按照Order1的順序進入鐵路,你需要確定列車可以以Order2的順序從地鐵站離開。
輸入
測試資料有多組
每組包含一個整數N和兩個字串O1,O2,N代表列車數量(1 <= N <= 9),O1代表進站順序,O2代表出站順序
輸出
對於每組資料
首先輸出一行"Yes."或"No.",代表能否由當進站順序為O1時,出站順序O2能否實現
若能實現,給出你的實現方法,其中"in"為列車進站,"out"為列車出站。
最後輸出一行FINISH。
具體輸出見樣例。
樣例輸入
3 123 321 3 123 312
樣例輸出
Yes. in in in out out out FINISH No. FINISH
#include <iostream> #include <stack> #include <string> using namespace std; void test(int m) { int n=m; string o1,o2; stack<char> T; cin>>o1>>o2; char p; string k; int j=0; for(int i=0;i<o1.length()&&j<o2.length();) { p=o1[i]; T.push(p); i++; k+="in\n"; while(!T.empty()) { if(T.top()==o2[j]) { T.pop(); k+="out\n"; j++; } else break; } } if(T.empty()||j==o2.length()) { cout<<"Yes."<<endl; cout<<k; } else cout<<"No."<<endl; } int main() { int n; while(cin>>n) { test(n); cout<<"FINISH"<<endl; } return 0; }