请问为什么提交之后样例一样却返回Wrong Answer?
查看原帖
请问为什么提交之后样例一样却返回Wrong Answer?
922691
Hisy楼主2024/1/24 09:30

输入:

CEBDAEEAACEBDAE
EBDAE

输出:

2
11
0 0 0 0 1
#include<stdio.h>
char str1[1000001],str2[1000001];
int kmp[1000001];
int main(int argc,char **argv){
	int len1=1,len2=1;
	gets(str1+1);
	gets(str2+1);
	for(;str1[len1];++len1){
		continue;
	};
	--len1;
	for(;str2[len2];++len2){
		continue;
	};
	--len2;
	int pos=0;
	for(int iter=2;iter<=len2;++iter){
		while(pos>0&&str2[iter]!=str2[pos+1]){
			pos=kmp[pos];
		};
		if(str2[pos+1]==str2[iter]){
			++pos;
		};
		kmp[iter]=pos;
	};
	pos=0;
	for(int iter=1;iter<=len1;++iter){
		while(pos>0&&str2[pos+1]!=str1[iter]){
			pos=kmp[pos];
		};
		if(str2[pos+1]==str1[iter]){
			++pos;
		};
		if(pos==len2){
			printf("%d\n",iter-len2+1);
			pos=kmp[pos];
		};
	};
	for(int iter=1;iter<=len2;++iter){
		printf("%d ",kmp[iter]);
	};
	return 0;
};
2024/1/24 09:30
加载中...