来自蒟蒻的求助
查看原帖
来自蒟蒻的求助
494471
g1306374356楼主2021/7/25 23:19

测试样例总是反着输出,不知道为啥,咋改都不行。

无论是自己编的码还是看题解后改的都不行。

下面是我一开始自己编的码

#include<bits/stdc++.h>
using namespace std;

stack <int>  check;
int  n;

bool judge ()
{
	int sum=1,n1,a[100010],b[100010];
	cin>>n1;
	for(int i=1;i<=n1;i++)
		cin>>a[i];
	for(int i=1;i<=n1;i++)
		cin>>b[i]; 
	for(int i=1;i<=n;i++)
	{
		check.push(a[i]);
		while((check.top())==b[sum])
		{
			check.pop();
			sum++;
			if(check.empty())break;
		}
	}
	if(check.empty())		return 1;
	else if(!check.empty()) return 0;
	while(!check.empty())check.pop(); 
}

int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		if(judge()==1)cout<<"Yes"<<endl;
		else if(judge()==0)cout<<"No"<<endl;
	}
	return 0;
}

然后是我改完之后的码(qwq我都改的和题解几乎一模一样了咋还是不行!qwq)

#include<bits/stdc++.h>
using namespace std;

stack <int>  check;
int  n;

int main()
{
	cin>>n;
	while(n--)
	{
		int sum=1,n1,a[100010],b[100010];
		cin>>n1;
		for(int i=1;i<=n1;i++)
			cin>>a[i];
		for(int i=1;i<=n1;i++)
			cin>>b[i]; 
		for(int i=1;i<=n;i++)
		{
			check.push(a[i]);
			while((check.top())==b[sum])
			{
				check.pop(),sum++;
				if(check.empty())break;
			}
		}
		if(check.empty())		cout<<"Yes"<<endl;
		else if(!check.empty()) cout<<"No"<<endl;
		while(!check.empty())check.pop(); 
	}
	
	return 0;
}

求助大佬赐教

2021/7/25 23:19
加载中...