不是很理解题解里的一个特判
查看原帖
不是很理解题解里的一个特判
416388
a16_楼主2022/9/24 20:31

每篇题解基本都有这一句:

if(s[i]=='('||s[i]=='[') continue;

感觉不需要啊,在匹配的时候应该就会自然排除掉

我的代码:

#include<cstdio>
#include<cstring>
const int N=1000010;
char s[N];
int f[N],ma,id;
bool match(int i,int j){
	return  s[i]=='('&&s[j]==')'||
			s[i]=='['&&s[j]==']';
}
int main(){
	scanf("%s",s);
	int l=strlen(s);
	for(int i=1;i<l;i++){
		int p=i-f[i-1]-1;
		if(match(p,i))
			f[i]=f[i-1]+2+f[p-1];
		if(f[i]>ma){
			ma=f[i];
			id=i;
		}
	}
	int L=id-f[id]+1,R=id;
	for(int i=L;i<=R;i++)
		putchar(s[i]);
	return 0;
} 

可以AC

刚刚测了一下题解,删掉后也可以AC

是我哪里想错了吗?求指证

2022/9/24 20:31
加载中...