大佬们麻烦帮忙看一下为什么样例通过了却只能得20分

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

2019lzh @ 2022-04-12 15:02:36

大佬们麻烦帮忙看一下为什么样例通过了却只能得20分

#include<bits/stdc++.h>
using namespace std;
stack <char> xb;
char clc[100010],haha[100010];
int b,c,d,k=1;
int main() {
    cin>>b;
    for(int i=1; i<=b; i++) {
        cin>>c;
        for(int j=1; j<=c; j++) {
            cin>>clc[j];
        }
        for(int h=1; h<=c; h++) {
            cin>>haha[h];//输入 
        }
        for(int j=1; j<=c; j++) {
            xb.push(clc[j]);
            while(!xb.empty()&&xb.top() ==haha[k]) {
                xb.pop() ;
                k++;
            }//判断是否符合,若符合则弹出 

        }
        if(xb.empty()) cout<<"Yes"<<endl;
        else {
            cout<<"No"<<endl;
            while(xb.empty() !=1) xb.pop() ;
        }//输出结果+清零 
        memset(clc,0,sizeof(clc));
        memset(haha,0,sizeof(haha));
        k=1;//重新初始化 
    }
    return 0;
}

by 编码落寞 @ 2022-04-12 16:09:26

@2019lzh

你这程序是不是T了4个点

每次处理结束后,都重新初始化数组,会很耗时


by 2019lzh @ 2022-04-13 14:08:59

@编码落寞 不是呀,是WA


by 编码落寞 @ 2022-04-13 14:36:44

@2019lzh

我用你的代码测试了,是你堆栈和数组类型的问题。char只能读取一个字符。例如11只能读到1。char更改为int就可以过了


by 2019lzh @ 2022-04-13 16:48:25

@编码落寞 好的,谢谢啦


|