40分WA,求助
查看原帖
40分WA,求助
1061213
liujiazhi楼主2024/7/25 18:55
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
void Stack()
{
	int z[maxn],x[maxn],y[maxn],top=0,tip=1;//用数组z模拟出入栈 
	bool f=0;
	int n,i;
    cin>>n;// 序列长度 
    for (i=1;i<=n;i++) cin>>x[i];//输入入栈序列 
    for (i=1;i<=n;i++) cin>>y[i];//输入出栈序列
    i=0; 
    while (top>0||!f)
    {
    	i++;//循环次数+1 
    	if (i<=n)//判断是否全部入栈 
    	{
    		z[++top]=x[i];//入栈 
    		f=1;
		}
    	else
    	{
    		if (z[top]!=y[tip]) //当出入栈序列不匹配时 
    		f=0;//标记为不可能 
			break;//跳出 
		}
    	if (z[top]==y[tip])
		{
    		top--;//出栈 
    		tip++;//继续往后判断出栈序列 
		}
	}
	if (f&&!z[top]) cout<<"Yes"<<endl;
	else cout<<"No"<<endl;
    return ;
}
int main()
{
	int p;
	cin>>p;
	while (p--) Stack();
	return 0;
}
2024/7/25 18:55
加载中...