为什么好像这种做法有问题?

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

tanghg @ 2022-07-08 12:00:21

rt,我认为好像没有问题,但是我看题解好像都是用数组做的,我不太清楚这种做法的错误,还请帮忙指出,谢谢您。

#include <iostream>
#include <stack>
using namespace std;
typedef long long ll;
stack<ll>a;
ll n,q,A;
int main() {
    cin>>q;
    for(int i=0;i<q;i++){
        cin>>n;
        for(int j=0;j<n;j++){
            cin>>A;
            a.push(A);
        }
        for(int j=0;j<n;j++){
            cin>>A;
            if(A!=a.top()){
                break;
            }
            a.pop();
            if(a.empty()){
                break;
            }
        }
        if(a.empty()){
            cout<<"Yes"<<endl;
       }else{
        cout<<"No"<<endl;
       }
       while(!a.empty()){
            a.pop();
       }
    }
    return 0;
}

by tanghg @ 2022-07-08 12:00:47

样例过了


by Hua生 @ 2022-07-08 12:32:07

不一定全部元素入栈后才开始出栈。


by tanghg @ 2022-07-08 12:35:14

@Hua生 哦,所以说题解要循环去看我就明白了,谢谢您


by tanghg @ 2022-07-08 12:36:04

此帖结


|