在线ide和评测机RE表现不一致?
查看原帖
在线ide和评测机RE表现不一致?
157677
maruize楼主2021/6/19 16:24

这样一份代码:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long LL;
const int N=1e6+105;
char s1[N],s2[N];
int nxt[N];
void kmp(char*s,int*next){
	int n=strlen(s+1);
	next[0]=-1;
	for(int i=1;i<=n;i++){
		int k=next[i-1];
		while(k!=-1&&s[k+1]!=s[i])k=next[k];
		next[i]=k+1;
	}
}
int main(){
	scanf("%s%s",s1+1,s2+1);
	kmp(s2,nxt);
	int l1=strlen(s1+1),l2=strlen(s2+1);
	int ans=0;
	for(int i=0,j=0;i<=l1;){
		while(s1[i+1]!=s2[j+1]){//这一行应该为while(s1[i+1]!=s2[j+1]&&i<=l1){
			if(j==0)i++;//RE原因:可能i无限加下去越界
			else j=nxt[j];
		}
		while(s1[i+1]==s2[j+1]&&i<l1&&j<l2)i++,j++;
		if(j==l2)ans++,j=nxt[j];
	}
	printf("%d\n",ans);
	return 0;
}

可是在线ide 和本地(win) 测评测数据都没RE,评测RE.

why?

2021/6/19 16:24
加载中...