判斷合法出棧序列

PIPI現有a-z 26個小球模擬出入棧操作,小球按照a~z的順序壓入棧,在棧頂的元素可以隨時被取出,在遊戲開始前給出任意26個字母的一些排列,問是否能夠由出棧順序得到這個排列。

輸入

輸入包含多組測試用例。 
每組測試用例包含26個字母組成的一個序列。 

輸出

若出棧順序合法,輸出"yes",否則輸出"no".

樣例輸入

abcdefghijklmnopqrstuvwxyz
zabcdefghijklmnopqrstuvwxy

樣例輸出

yes
no

判斷合法的出棧序列,一個元素要出棧,那麼比它先入棧但還沒出棧的那些元素,出棧順序與入棧順序是相反的。比如cdbea,c要出棧,比c先入棧但還沒出棧的那些元素爲a,b,這兩個元素的出棧順序必須和入棧順序相反,爲ba。

#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
int main(void)
{
    int i,j,flag;
    string s,t;
    while(cin >> s) {
        flag = 0;
        for(i = 0; i < 26; i++) {
            t = "";
            for(j = i + 1; j < 26; j++) {
                if(s[j] < s[i]) {
                    t.push_back(s[j]);
                }
            }
            int len = t.size();
            for(j = 0; j < len - 1; j++) {
                if(t[j] < t[j + 1]) {
                    flag = 1;
                    break;
                }
            }
            if(flag) {
                break;
            }
        }
        if(flag) printf("no\n");
        else printf("yes\n");
    }
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章