80分代码不知道错在哪里,求大佬给一个能卡住我程序的数据

P4387 【深基15.习9】验证栈序列

拱垲 @ 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了


|