0分求助

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

Crow_ming @ 2024-03-17 11:02:18

#include<iostream>
#include<stack>
using namespace std;
stack<int>a;
int z;//询问次数
int n;//序列长度
int x;//序列的数
int main() {
    cin >> z;
    int answer[z+1]={};
    for (int i = 1; i <= z; i++) {
        cin >> n;
        int testout[n + 1] = {};
        for (int j = 1; j <= n; j++) {
            cin >> x;
            a.push(x);
        }
        for (int j = 1; j <= n; j++) {
            cin >> testout[j];
            int tmp = a.top(); //出栈
            a.pop();//删栈顶
            if(tmp!=testout[j]){
                answer[i]=1;
            }
        }
    }
    for(int i=1;i<=z;i++){
        if(answer[i]){
            cout<<"No"<<endl;
        }else{
            cout<<"Yes"<<endl;
        }
    }
    return 0;
}

感觉没错......


by i__ak_ioi @ 2024-03-26 17:21:03

输入:

2
5
1 2 3 4 5
2 1 4 3 5
4
1 2 3 4
3 2 1 4

输出:


Yes
Yes

by i__ak_ioi @ 2024-03-26 17:21:48

并不是将前n个数入栈后,再对后n个数进行是否出栈序列的判断。

而是,可能前面序列中的部分数入栈时,就有后面序列开始要出栈了。


by Crow_ming @ 2024-03-29 20:40:52

@Ren_YiAKIOI OK,谢谢大佬!!!!


|