fufuQAQ @ 2022-03-01 23:46:29
#include<bits/stdc++.h>
#include<stack>
using namespace std;
const int N=100010;
//stack<int> x;
int a[N],b[N];
int main()
{
int t;
cin>>t;
while(t--)
{
stack<int> x;
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
x.push(a[i]);
}
for(int i=0;i<n;i++)
cin>>b[i];
int ans=0;
for(int i=0;i<n;i++)
{
if(x.top()==b[i])
{
ans++;
x.pop();
}
if(x.size()==0) break;
}
if(x.size()) cout<<"No"<<endl;
else cout<<"Yes"<<endl;
while(!x.empty())
x.pop();//清空栈
//
// if(ans==n)
// cout<<"Yes"<<endl;
// else
// cout<<"No"<<endl;
}
return 0;
}
by AC_CSP @ 2022-03-02 07:44:12
for(int i=0;i<n;i++)
{
if(x.top()==b[i])
{
ans++;
x.pop();
}
if(x.size()==0) break;
}
这段代码你这个按照你抄的题解的说法
b数组下标独自算,并不是i
回去看看
by 编码落寞 @ 2022-03-02 08:27:24
@zhejianguniversity
你这种写法的出栈顺序只能是从顶部到底。没有中间出栈的情况。
by _8762 @ 2022-03-02 10:55:27
其实自己造几个数据然后模拟一下就好了,为什么会一直不知道自己哪错了