Problem R: 棧小遊戲

#include <iostream>
#include <vector>
#include <stack>
using namespace std;
class Operation
{
public :
    vector<int> data;
    stack<int> iStack;
    vector<char> opers;
    vector<int> result;

    void inputData()
    {
        int temp;
        while(cin>>temp)
        {
            if(temp==0)
                break;
            else
            data.push_back(temp);
        }
    }
    void inputOpers()
    {
        char temp;
        while(cin>>temp)
        {
            if(temp=='E'||temp=='e')
                break;
            else if(temp=='i'||temp=='I'||temp=='o'||temp=='O')
                opers.push_back(temp);
        }
    }
    void showResult()
    {
        int j1=0, j2=0;
        cout<<"The pop sequence is:";
        for(int i=0; i<opers.size(); i++)
        {
            if(opers[i]=='i'||opers[i]=='I')
            {
                if(j1<data.size())//當data裏的數據數量知足不了入棧操做時中止入棧
                iStack.push(data[j1++]);
            }
            else if(opers[i]=='o'||opers[i]=='O')
            {
                if(!iStack.empty())//當堆棧爲空時中止出棧
                {
                    cout<<" "<<iStack.top();
                    result.push_back(iStack.top());//將出棧數據存到 result
                    iStack.pop();
                }
            }
        }
            if(result.empty())//result 爲空代表無數據出棧,輸出empty
            cout<<"Empty.";
            cout<<endl;
    }
    void clearData()
    {
        data.clear();
        opers.clear();
        result.clear();
        while(!iStack.empty())// 堆棧無clear 用法。
            iStack.pop();
    }
};
int main()
{
    Operation myOp;
    int cases;
    cin>>cases;
    for (int i = 0; i < cases; i++)
    {
        myOp.clearData();
        myOp.inputData();
        myOp.inputOpers();
        myOp.showResult();
    }
    return 0;
}

  

Problem R: 棧小遊戲

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 848  Solved: 545
[Submit][Status][Web Board]php

Description

小明想深刻了解Stack(棧)的用法,因此他打算寫一個類來模擬一下。可是他沒有學過C++中強大的STL,因此他如今向你求助了。請幫他編寫一個類Operation,包括4個屬性:ios

1. vector<int> data:存儲用於仿真的數據。測試

2. stack<int> iStack:棧。spa

3. vector<char> opers:對棧的操做。blog

4. vector<int> result:存儲出棧的數據。遊戲

還有4個方法:ip

1. void inputData():讀取數據。ci

2. void inputOpers():讀取操做。get

3. void showResult():顯示出棧的數據序列。input

4. void clearData():清空全部的屬性值。

Input

1N>0表示有N個測試用例。

每一個測試用例由兩行組成:

1. 1行是若干個int類型的數據,以「0」做爲結束標識。注意:「0」不做爲輸入數據即Operation類中data成員的一個元素,只是用作結束標識。

2. 2行是若干個英文字母,用'i''I'(字母I,不是數字1.)表示入棧操做,用‘o'或者'O’(字母O,不是數字0.)表示出棧操做,用'e'或者'E'表示輸入結束。可是小明很不仔細,這些字符序列中可能包括其餘字符。

Output

輸出有N行,每一個測試用例產生一行輸出。

每行的格式爲:「The pop sequence is: 」,以後按照出棧順序顯示全部數據,這些數據兩兩之間用1個空格隔開,且最後沒有空格。若是沒有產生出棧數據,則顯示「Empty.」

Sample Input

6

1 2 3 4 5 6 7 8 -1 -2 -3 -4 -5 -6 -7 0

i I I I o O o c c c e

1 2 3 4 5 6 7 8 -1 -2 -3 -4 -5 -6 -7 0

o o o i i i i o o i i o o o o o o o o o o o o e

1 2 3 4 5 6 7 8 -1 -2 -3 -4 -5 -6 -7 0

c c c i c i i o o c c i i i i i i i i i i i o o o o o c e

1 2 3 4 5 6 7 8 -1 -2 -3 -4 -5 -6 -7 0

i i i i i i i i i i i i i i i i i i i i i i i i i i o o o o o e

1 2 3 4 5 6 7 8 -1 -2 -3 -4 -5 -6 -7 0

o o o o o o o c c c c c c c c e

1 2 3 4 5 6 7 8 -1 -2 -3 -4 -5 -6 -7 0

i i i i i i i i i i i i i i e

Sample Output

The pop sequence is: 4 3 2

The pop sequence is: 4 3 6 5 2 1

The pop sequence is: 3 2 -6 -5 -4 -3 -2

The pop sequence is: -7 -6 -5 -4 -3

The pop sequence is: Empty.

The pop sequence is: Empty.

HINT

1

2

3

4

5

6

7

8

9

10

11

12

13

14

int main()

{

    Operation myOp;

    int cases;

    cin>>cases;

    for (int i = 0; i < cases; i++)

    {

        myOp.clearData();

        myOp.inputData();

        myOp.inputOpers();

        myOp.showResult();

    }

    return 0;

}

相關文章
相關標籤/搜索