因為題目沒有額外的要求,像是最少執行步驟等
因此,這裡採用極為簡單的作法
rule1 : push 一律 push 到 stack2
rule2 : pop 一律從 stack1 pop
上面兩條規則可保證
1. 如果 stack1 不是空的,則下一個要 pop 的值一定在 stack1 的 top
2. 如果 stack1 是空的,則下一個要 pop 的值一定在 stack2 的 bottom
#include <iostream>
#include <stack>
using namespace std;
int main()
{
char instruction[100];
stack <bool> stackId[2];
while(cin.getline(instruction, 100)){
if(instruction[1] == 'u'){
stackId[1].push(1);
cout << "2";
}
else{
if(stackId[0].empty()){
while(!stackId[1].empty()){
stackId[0].push(stackId[1].top());
stackId[1].pop();
cout << "6";
}
stackId[0].pop();
cout << "3";
}
else{
stackId[0].pop();
cout << "3";
}
}
}
cout << endl;
}
留言列表