24h購物| | PChome| 登入
2012-12-26 22:12:35| 人氣1,235| 回應0 | 上一篇 | 下一篇

[UVA][stack] 12582 - Wedding of Sultan

推薦 0 收藏 0 轉貼0 訂閱站台

題目意思:給定一個圖的走訪方式(dfs),問每個節點的 degree。

解法:
既然原本 dfs 是用 stack 去寫,那麼還原也是 stack 去模擬。
第一次遇到的字母 = push()
第二次遇到的字母 = pop(), 同時 top 是相連的符號。



#include <stdio.h>
#include <string.h>

int main() {
    int t, cases = 0, i;
    scanf("%d", &t);
    while(t--) {
        char s[105];
        int ans[128] = {}, stk[128];
        int stkIdx = -1;
        scanf("%s", s);
        for(i = 0; s[i]; i++) {
            if(stkIdx < 0 || stk[stkIdx] != s[i]) {
                stk[++stkIdx] = s[i];
                ans[s[i]]++;
            } else {
                stkIdx--;
                if(stkIdx >= 0)
                    ans[stk[stkIdx]]++;
            }
        }
        ans[s[0]]--;
        printf("Case %d\n", ++cases);
        for(i = 'A'; i <= 'Z'; i++)
            if(ans[i])
                printf("%c = %d\n", i, ans[i]);
    }
    return 0;
}

台長: Morris
人氣(1,235) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 不分類 | 個人分類: UVA |
此分類下一篇:[UVA][殺人遊戲][zkw線段樹] 1394 - And Then There Was One
此分類上一篇:[UVA] 12583 - Memory Overflow

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文