3002: 出栈顺序(栈和队列)

时间限制: 1 Sec  内存限制: 128 MB
提交: 80  解决: 20

题目描述

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

输入

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

输出

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

样例输入

5
1 2 3 4 5
5 4 3 2 1

样例输出

Yes

提示

 1、入栈过程中可以出栈


2、请使用C++编译并提交

迷失在幽谷中的鸟儿,独自飞翔在这偌大的天地间,却不知自己该飞往何方…
#include <iostream>
#include <algorithm>
using namespace std;
int n;
typedef struct
{
    int data;
    int w;
} ab;
ab a[105];
int findd(int t)
{
    for(int i=0; i<n; i++)
        if(a[i].data==t)return a[i].w;
    return 0;
}
bool panduan(int b[105],int l,int t)
{
    int min=0xffff;
    for(int i=l+1; i<n; i++)
    {
        int k=findd(b[i]);
        if(k<t)min=min>k?k:min;
        if(k<t&&k>min)return 1;
    }
    return 0;
}
int main()
{
    cin>>n;
    int b[105],i;
    for(int i=0; i<n; i++)
    {
        cin>>a[i].data;
        a[i].w=i;
    }
    for(i=0; i<n; i++)
        cin>>b[i];
    for(i=0; i<n; i++)
    {
        int t=findd(b[i]);
        if(panduan(b,i,t))break;
    }
    if(i!=n)cout<<"No"<<endl;
    else cout<<"Yes"<<endl;
    return 0;
}


相关文章:

  • 2022-12-23
  • 2021-12-29
  • 2022-02-23
  • 2021-12-25
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-02
猜你喜欢
  • 2021-09-23
  • 2021-12-02
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-01
  • 2022-03-03
相关资源
相似解决方案