HzuMomoc


私信TA

用户名:932521665

访问量:35971

签 名:

记得在搬砖中多摸鱼!!!

等  级
排  名 90
经  验 9080
参赛次数 8
文章发表 68
年  龄 0
在职情况 在职
学  校 贺州学院
专  业

  自我简介:

解题思路:使用KMP算法也可以过。
    具体实现百度一大堆
注意事项:

参考代码:

#include <bits/stdc++.h>
using namespace std;
void get_next(char T[],int next[]){
	int i,j;
	i = 0;
	j = 1;
	next[1] =0;
	while(j<T[0]){
		/* 第一个元素*/
		if(i == 0 ||T[i]==T[j])
		{
			i++;
			j++;
			next[j] = i;
		}
	else
		i = next[i];//不相等  
	}
	
}

int Index_KMP(char s[],char T[]){
	int next[1000];
	int j = 1;
	int i = 1;
	get_next(T,next);
	
	while(i<=s[0] &&j<=T[0]){
		if(j==0 || s[i] == T[j]){
			i++;
			j++;
		}
		else
			j = next[j];
	}
	if(j>T[0])
		return i-T[0];
	return 0;
}
int main ()
{
	char T[1000],S[1000];
	int i,k;
	while(scanf("%s %s",S,T)!=EOF){
		k = strlen(T);
		for(i = strlen(T);i>0;i--)
			T[i] = T[i-1];
		T[0] = k;
	k = strlen(S);
	for(int i = strlen(S);i>0;i--)
		S[i] = S[i-1];
	
	S[0] = k;
	printf("%d\n",Index_KMP(S,T));
	}
	return 0;
}


 

0.0分

1 人评分

  评论区

  • «
  • »