80分代码不知道错在哪里,求大佬给一个能卡住我程序的数据
查看原帖
80分代码不知道错在哪里,求大佬给一个能卡住我程序的数据
139334
拱垲楼主2023/10/25 15:14
#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;
}
2023/10/25 15:14
加载中...