出栈顺序(栈和队列)
时间: 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;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。