判断合法出栈序列

PIPI现有a-z 26个小球模拟出入栈操作,小球按照a~z的顺序压入栈,在栈顶的元素可以随时被取出,在游戏开始前给出任意26个字母的一些排列,问是否能够由出栈顺序得到这个排列。

输入

输入包含多组测试用例。 
每组测试用例包含26个字母组成的一个序列。 

输出

若出栈顺序合法,输出"yes",否则输出"no".

样例输入

abcdefghijklmnopqrstuvwxyz
zabcdefghijklmnopqrstuvwxy

样例输出

yes
no

判断合法的出栈序列,一个元素要出栈,那么比它先入栈但还没出栈的那些元素,出栈顺序与入栈顺序是相反的。比如cdbea,c要出栈,比c先入栈但还没出栈的那些元素为a,b,这两个元素的出栈顺序必须和入栈顺序相反,为ba。

#include 
#include 
#include 
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;
}

 

你可能感兴趣的:(ACM-数据结构,数据结构与算法分析)