Problem B: 出栈顺序(栈和队列)
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 62 Solved: 12
[ Submit][ Status][ Web Board]
Description
给出一个入栈序列,和一个出栈序列,判断该出栈序列是否正确。
Input
输入包含三行,第一行为序列的长度N,第二行为N个数表示入栈顺序,第三行同样为N个数,表示出栈顺序。我们保证这N个数字不相同。
Output
如果该出栈序列正确,则输出“Yes”,否则输出“No”。
Sample Input
5
1 2 3 4 5
5 4 3 2 1
Sample Output
Yes
HINT
1、入栈过程中可以出栈
2、请使用C++编译并提交
#include<stdio.h>
#include<stdlib.h>
int
puanduan(
int
a[],
int
b[],
int
n)
{
int
i,j,k,t=1;
for
(i=0;i<n;i++)
for
(j=i+1;j<n;j++)
for
(k=j+1;k<n;k++)
{
if
(a[i]<a[j]&&a[j]<a[k]&&b[j]<b[k]&&b[k]<b[i])
{
t=0;
break
;
}
}
if
(t==0)
return
0;
return
1;
}
int
main()
{
int
n,i,a[999],b[999];
scanf
(
"%d"
,&n);
for
(i=0;i<n;i++)
scanf
(
"%d"
,&a[i]);
for
(i=0;i<n;i++)
scanf
(
"%d"
,&b[i]);
if
(puanduan(a,b,n)==1)
printf
(
"Yes\n"
);
else
printf
(
"No\n"
);
}