判断出栈顺序(转)

比如入栈顺序是1 2 3 4;则出栈顺序4 3 2 1,1 4 3 2而1 4 2 3就不是

输入:一个整数,然后输入一个入站序列

输出:如果合法,输出yes;否则输出no

输入样例:

3

3 1 2

输出样例

no

 

#include <stdio.h>

int main()
{
    int n;
    int a[10];
    int max;
    int t;

    int i;
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    max=a[0];
    for(i=0;i<n;i++)
    {
        if(a[i]<a[i+1]&&max>a[i+1])    
        {
            puts("No");
            return 0;
        }
        t=a[i]<a[i+1]?a[i+1]:a[i];
        if(max<t)    max=t;        
    }
    puts("Yes");
    return 0;
}

 

如果按小到大出来的数,必定是进去就出来,那么比它们还大的数,就不可能比他们还早出来,因为大家最快也是进去就出来,先进去的,必先出来。

posted on 2012-06-15 15:48  奋斗者  阅读(1692)  评论(0编辑  收藏  举报

导航