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

这道题最难的就是题意了,就是可以多次入栈,举个例子
1 2 3 4
那么我可以1先入栈,出栈,2入栈再出栈,3入栈再出栈,4入栈再出栈,这样出栈的顺序就是1 2 3 4
也可以1,2先入栈再出栈,3,4入栈再出栈,这样出栈的顺序就是2 1 4 3;
所以每入一次栈,我们就要出栈
代码如下
`#include<bits/stdc++.h>
using namespace std;
stacks;
int a[100001],b[100001];
int main(){
int q,n,num;
cin>>q;
while(q--){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++) cin>>b[i];
int k=1;
for(int i=1;i<=n;i++){
s.push(a[i]);
while(s.top()==b[k]){ //每入栈一个数,就要检查是否出栈
k++;
s.pop();
if(s.empty()) break;
}
}
if(s.empty()) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
while(!s.empty()) s.pop();
}
}

`

原文地址:https://www.cnblogs.com/zh1014/p/13461757.html