Pagini recente » Cod sursa (job #2692668) | Cod sursa (job #1230616) | Cod sursa (job #1917862) | Cod sursa (job #2494827) | Cod sursa (job #2542013)
#include <iostream>
#include<fstream>
#include<string.h>
using namespace std;
int n,m;
ifstream in("strmatch.in");
ofstream out("strmatch.out");
int main()
{
char urm[100];
char P[100];
char T[1000];
int k,q,i;
int s[100];
int v=0;
in.getline(P,100);
m=strlen(P);
in.getline(T,100);
n=strlen(T);
urm[0]=-1;
k=-1;
for(q=1;q<m;q++){
while(k>=0&&P[k+1]!=P[q]) k=urm[k];
if(P[k+1]==P[q])k++;
urm[q]=k;
}
k=-1;
for(q=0;q<n;q++){
while(k>=0&&P[k+1]!=T[q])k=urm[k];
if(P[k+1]==T[q])k++;
if(k==m-1){
s[v++]=q-k;
k=urm[k];
}
}
out<<v<<endl;
for(i=0;i<v;i++)out<<s[i]<<" ";
}