数据的自然柠檬
typedefstructsstring { charch [ maxlen ]; int length; (; KF算法的j的移动函数
voidget_next(sstringt,int next[] ) { int i=1; next[1]=0; int j=0; while(it.length ) if ) j==0||t.ch[I-1]==t.ch[j-1] ) I; j; next[i]=j; } else j=next[j]; }如果字符串t是字符串s的部分字符串,则经典KMP算法确定输出部分字符串位于主字符串的第一个位置
int Inder_common健康月光(SString S,SString T,int pos ) { int next[255]; int x; //存储上一个j值//int t=1; //计数get_next(t,next ); //12打印() (n ); int i=pos; int j=1; wile(I=s.lengthj=t.length ) ) { //x=j; if(j==0||s.ch[I-1]==t.ch[j-1] ) I; j; } else j=next[j]; (//printf('%d ',j ); //return t; if(JT.Length ) return i-T.length; else return -1; }
//糖块匹配
void Index_interesting (
{
SString S,t;
int n; //n个同学
scanf('%d ',n );
int a=0
for(a=0; an; a )
{
scanf('%d ',S.ch[a] );
}
int m; //
scanf('%d ',m );
for(a=0; 自动取款机; a )
{
scanf('%d ',T.ch[a] );
}
s.Length=Strlen(s.ch );
t.Length=Strlen(t.ch );
int next[255]; int x; //存储上一个j值
//int t=1; //计数
get_next(t,next );
//12打印() (n );
int i=1;
int j=1;
wile(I=s.lengthj=t.length ) )。
{
//x=j;
if(j==0||s.ch[I-1]==t.ch[j-1] )
{
}
else
j=next[j];
(//printf('%d ',j );
//return t;
if(JT.length ) )。
{printf('%d ',i-T.length );
printf(%d(n ),i-T.length m-1; }
else
printf(-1(n );
}
//KMP算法移动次数比较
int Index健康的月光(SString S,SString T,int pos ) )。
{
int next[255]; int x; //存储上一个j值
int t=1; //计数
get_next(t,next );
打印((n );
int i=pos;
int j=1;
wile(I=s.lengthj=t.length ) )。
{
x=j;
if(j==0||s.ch[I-1]==t.ch[j-1] )
{
}
else
j=next[j];
if(j=t.length )。
{
if(x==0);
else
t;
}
printf('%d ',j );
}
返回t;
/*if(JT.length ) ) ) ) ) ) )。
{printf('%d ',i-T.length ); }
else
打印(-1 ); */
}
int Index悲伤的大衣(SString S,SString T,int pos ) ) )。
{
int i,j; int t=1; //j记录移动的次数
int c; //存储上一个j值
i=pos; j=1;
wile(I=s.lengthj=t.length ) )。
{
c=j;
if(s.ch[I-1]==t.ch[j-1] ) I; j; }
else{i=i-j 2; j=1; }
printf('%d ',j );
if(j=t.length )。
t;
}
返回t;
}
int main () )
{
SString S,t;
GETS(s.ch );
GETS(t.ch );
s.Length=Strlen(s.ch );
t.Length=Strlen(t.ch );
//printf(kmp比较的次数为%d(n )、Index健康月光) s、t、1 ) );
//printf(BF比较的次数为%d(n ),索引悲伤外套) s,t,1 ) );
//Index健康的月光(s,t,1 );
printf('%d ',Inder_common健康月光(s,t,1 );
Index_interesting (;
返回0;
}