测试样例总是反着输出,不知道为啥,咋改都不行。
无论是自己编的码还是看题解后改的都不行。
下面是我一开始自己编的码
#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;
}
求助大佬赐教