a565. 2.p&q的邂逅

a565. 2.p&q的邂逅


解題思路 : 將p放進stack中,若有q,則對數+1並將stack中最上層的p刪掉,即可計算對數
                       

程式碼

/*
a565. 2.p&q的邂逅
https://zerojudge.tw/ShowProblem?problemid=a565
skyblue
AC (0.3s, 9.8MB)
*/

#include <bits/stdc++.h>
using namespace std;

char line[100000005];

int main(){
    int n;
    scanf("%d", &n);

    while(n--){
        int pairs = 0;
        stack<char> stk;

        scanf("%s", line);
        int len = strlen(line);

        for(int i = 0; i<len; i++){
            switch(line[i]){
                case '.':
                    break;

                case 'p':
                    stk.push('p');
                    break;
                    //看到一個p,就把它放進stack中

                case 'q':
                    if(!stk.empty()){
                        pairs++;
                        stk.pop();
                    }
                    //如果stack不是空的,代表裡面有待配對的p,對數增加一件,把最上面的p刪掉
                    break;
            }
        }
        printf("%d\n", pairs);
    }
    return 0;
}

/*
範例輸入 #1
2
..p..p.p...q.q.
.p...qq..p.pq.p..q.qpp..qpq
範例輸出 #1
2
6
*/

留言

這個網誌中的熱門文章

b971 等差數列

c290. APCS 2017-0304-1秘密差

d066.上學去吧!