Cod sursa(job #369338)
| Utilizator | Data | 28 noiembrie 2009 08:37:07 | |
|---|---|---|---|
| Problema | Potrivirea sirurilor | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.41 kb |
#include<stdio.h>
#include<string.h>
//se cauta M in N
char M[100],N[100];
int m,n,U[100];
void prefix(){
int i,j=-1;
U[0]=-1;
for(i=0;i<n;++i){
while(j>-1 && N[i]!=M[j+1]) j=U[j];
if(N[i]==M[j+1]) j++;
U[i]=j;
if(j==m-1) printf("%d ",i-m+2);
}
}
int main(){
freopen("kmp.in","r",stdin);
freopen("kmp.out","w",stdout);
scanf("%s%s",M,N);
m=strlen(M);
n=strlen(N);
prefix();
return 0;
}
