Pagini recente » Cod sursa (job #264699) | Cod sursa (job #1795316) | Cod sursa (job #206373) | Cod sursa (job #3135442) | Cod sursa (job #1937926)
#include <bits/stdc++.h>
//strmatch cu Z-algorithm
using namespace std;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
char A[1000],*p;
int n,i,j,st,dr,Z[1000];
int main()
{
A[0]='#';p=A+1;f>>p;n=strlen(p);
//B[0]='#';cin>>(B+1);n=strlen(B)-1;
//functia Z
for(i=2;i<=n;i++)
{
if(i<=dr&&i+Z[i-st+1]-1<dr)
{
Z[i]=Z[i-st+1];
continue;
}
if(i<dr)
{
j=dr-i+1;
st=i;
while(A[dr+1]==A[j+1])
dr++,j++;
Z[i]=j;
continue;
}
if(A[i]!=A[1])
continue;
st=dr=i;j=1;
while(A[dr+1]==A[j+1])
dr++,j++;
Z[i]=j;
}
for(i=1;i<=n;i++)
g<<Z[i];
return 0;
}