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
@编码落寞 好的,谢谢啦