出栈顺序(栈和队列)

时间: 1ms        内存:128M

描述:

给出一个入栈序列,和一个出栈序列,判断该出栈序列是否正确。

输入:

输入包含三行,第一行为序列的长度N,第二行为N个数表示入栈顺序,第三行同样为N个数,表示出栈顺序。我们保证这N个数字不相同。

输出:

如果该出栈序列正确,则输出“Yes”,否则输出“No”。

示例输入:

5
1 2 3 4 5
5 4 3 2 1

示例输出:

Yes

提示:

参考答案(内存最优[0]):

aff

参考答案(时间最优[0]):

#include<stdio.h>
#include<string.h>
int main()
{
    int n,a[100],b,j,p=1,k,i;
    scanf("%d",&n);
    memset(a,0,sizeof(-1));
    for(i=0; i<n; i++)
        scanf("%d",&a[i]);
    for(i=0; i<n; i++)
    {
        scanf("%d",&b);
        for(j=0; j<n; j++)
            {if(b==a[j])
            {
                a[j]=-1;
                if(j<n-1)j=j+1;
                k=j;
                for(; j<n; j++)
                {
                    if(a[j]==-1)
                    {
                        for(; k<=j; k++)
                            if(a[k]!=-1)p=-1;
                    }
                }
                break;
            }}
    }
    if(p==-1)printf("No\n");
    else printf("Yes\n");
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。