题解
2026-09-07 22:17:41
发布于:浙江
4阅读
0回复
0点赞
思路一:将入栈序列存入栈,然后把出栈序列做判断
AC代码
#include<bits/stdc++.h>
using namespace std;
void ss(){
int n;stack<int>a;
cin>>n;
int b[n+1],c[n+1];
for(int i=1;i<=n;i++){
cin>>b[i];
a.push(b[i]);
}
for(int i=1;i<=n;i++){
cin>>c[i];
}
for(int i=1;i<=n;i++){
if(a.top()==c[i]){a.pop();}
else{cout<<"No\n";return;}
}
cout<<"Yes\n";
}
int main(){
int T;cin>>T;
while(T--){
ss();
}
return 0;
}
思路二:我们不难发现,其实可以不用栈,用变量i直接对照(最优)
AC代码
#include<bits/stdc++.h>
using namespace std;
void ss(){
int n;
cin>>n;
int b[n+1],c[n+1];
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
for(int i=1;i<=n;i++){
cin>>b[i];
}
for(int i=1;i<=n;i++){
cin>>c[i];
if(b[n-i+1]!=c[i]){cout<<"No\n";return;}
}
cout<<"Yes\n";
}
int main(){
int T;cin>>T;
while(T--){
ss();
}
return 0;
}
记得点赞
这里空空如也






有帮助,赞一个