哪里错了(QAQ)

P4387 【深基15.习9】验证栈序列

Adore_the_No_2 @ 2021-12-25 16:12:36

RT

#include<bits/stdc++.h>
using namespace std;
int a[100001],b[100001];
stack<int> s;
int main()
{
    int T;
    cin>>T;
    while(T--)
    {

        int n,k=1;
        cin>>n;
        for(int i=1;i<=n;i++)
            cin>>a[i];
        for(int i=1;i<=n;i++)
            cin>>b[i];
        for(int i=1;i<=n;i++)
        {
            s.push(a[i]);
            if(s.top()==b[k])
            {
                s.pop();
                k++;
            }
        }
        for(int i=k;i<=n;i++)
        {
            if(s.top()==b[i])
                s.pop();
            else
                break;
        }
        if(s.empty())
        {
            cout<<"YES"<<endl;
        }
        else
            cout<<"NO"<<endl;
        if(!s.empty())
        {
            s.pop();
        }
    }
    return 0;
}

by greenhb @ 2022-02-09 18:28:26

是不是应该用while循环


|