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,谢谢大佬!!!!