Pagini recente » Cod sursa (job #2315272) | Cod sursa (job #78809) | Cod sursa (job #1418070) | Cod sursa (job #3269983) | Cod sursa (job #552335)
Cod sursa(job #552335)
#include<iostream.h>
#include<fstream.h>
#include<string.h>
#include<stdio.h>
int pi[100];
void prefix(char N[100])
{
int n,k,i;
n=strlen(N);
k=0;
pi[0]=0;
for(i=1;i<n;i++)
{
while(k>0&& N[k]!=N[i])
k=pi[k-1];
if(N[k]==N[i])
k++;
pi[i]=k;
}
}
int main()
{
char *N = new char[20000];
char *M = new char[20000];
int i=0,n,m,q,a[1000],t,s;
char c;
FILE *f = fopen("strmatch.in","rt");
fscanf(f,"%s%s",N,M);
fclose(f);
prefix(N);
FILE *g = fopen("strmatch.out","wt");
fprintf(g,"%s\n%s",N,M);
fclose(g);
/* t=s=0;
m=strlen(M);
n=strlen(N);
q=0;
ofstream g("strmatch.out");
for(i=0;i<m;i++)
{
// g<<":i";
while(q>0 && N[q]!=M[i])
q=pi[q-1];
if(N[q]==M[i])
q++;
if(q==n&&t<1000) {a[t]=i-n+1; t++; s++;}
if(q==n&&t>999) s++;
}
g<<s<<'\n';
for(i=0;i<t;i++)
g<<a[i]<<" ";
g.close();*/
return 0;
}