Pagini recente » Cod sursa (job #1554737) | Cod sursa (job #387024) | Cod sursa (job #1363189) | Cod sursa (job #40852) | Cod sursa (job #2038438)
#include <iostream>
#include <string.h>
#include <fstream>
using namespace std;
ifstream q("strmatch.in");
ofstream g("strmatch.out");
char N[1000],H[10000],S[1000];
int n,h,c;
int k,f;
int main()
{
q>>N+1;
n=strlen(N+1);
for(int i=2;i<=n;i=i+1){
k=i-1;
c=N[i];
while(S[k]!=-1&&N[S[k]+1]!=c){
k=S[k];
}
S[i]=S[k]+1;
}
q>>H+1;
h=strlen(H+1);
f=0;
for(int i=1;i<=h;i=i+1){
while(f!=-1){
if(N[f+1]==H[i]){
break;
}
else{
f=S[f];
}
}
if(f==-1){
f=0;
}
else{
f++;
if(f==n){
g<<i-n+1<<"\n";
f=S[f];
}
}
}
return 0;
}