Pagini recente » Cod sursa (job #159382) | Cod sursa (job #1645059) | Cod sursa (job #474182) | Cod sursa (job #2806282) | Cod sursa (job #1598878)
#include <iostream>
#include <fstream>
#include <string.h>
#define maxn 2000003
using namespace std;
char a[maxn],b[maxn];
int p[maxn];
int main()
{int n,m,i,j,OK,q,nr,v[1000],k;
fstream f("strmatch.in",ios::in);
fstream g("strmatch.out",ios::out);
f.getline(a,maxn,'\n');
f.getline(b,maxn,'\n');
n=strlen(a);
m=strlen(b);
p[0]=0;
for(i=1;i<n;i++)
{OK=0;q=0;
for(j=0;((j<=i)&&(OK==0));j++)
if(a[i+q]==a[j])
q++;
else
{OK=1;p[i]=q;}
}
nr=0;
i=0;
while(i<m)
{k=i;
j=0;
while((a[j]==b[k])&&(j<n))
{j++;k++;
if(j==n)
{nr++;
v[nr]=i;}
}
i=i+p[j-1]+1;
}
g<<nr<<'\n';
for(i=1;i<=nr;i++)
g<<v[i]<<" ";
f.close();
g.close();
}