拱垲 @ 2023-10-25 15:14:10
#include <iostream>
#include <stack>
using namespace std;
int q,n,s[100005],e[100005];
stack<int> sk;
int dfs(int i,int t)
{
if(t==n+1)
{
if(i==n+1)return 1;
else
{
if(sk.top()==e[i])
{
sk.pop();
return dfs(i+1,t);
}
else return 0;
}
}
if(!sk.empty()&&sk.top()==e[i])//如果可以出栈就出栈
{
sk.pop();
return dfs(i+1,t);
}
else//否则入栈
{
sk.push(s[t]);
return dfs(i,t+1);
}
}
int main()
{
scanf("%d",&q);
for(int i=1;i<=q;i++)
{
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&s[i]);
for(int i=1;i<=n;i++)scanf("%d",&e[i]);
if(dfs(1,1)==1)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}
by 拱垲 @ 2023-11-01 12:15:33
已经解决问题了,问题出在我算完前一组后没清空栈,清空后就AC了