因為題目沒有額外的要求,像是最少執行步驟等

因此,這裡採用極為簡單的作法

 

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;


}
 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大神(偽) 的頭像
    大神(偽)

    大神的世界

    大神(偽) 發表在 痞客邦 留言(0) 人氣()