Pagini recente » Cod sursa (job #1959001) | Cod sursa (job #300512) | Cod sursa (job #2342515) | Cod sursa (job #254308) | Cod sursa (job #1096086)
#include <fstream>
#include<cstring>
#include<cstdlib>
using namespace std;
//ifstream f("strmatch.in");
//ofstream g("strmatch.out");
char N[100],M[100];
int i,n,k,m,x,j,pi[100],rez[100];
int main()
{
freopen("strmatch.in","r",stdin);
freopen("strmatch.out","w",stdout);
gets(N+1);
gets(M+1);
N[0]=M[0]=13;
n=strlen(N)-1;
m=strlen(M)-1;
k=0;
pi[1]=0;
for(i=2;i<=n;i++)
{
while(k&&(N[k+1]!=N[i]))
k=pi[k];
if(N[k+1]==N[i])
k++;
pi[i]=k;
}
k=0;
for(i=1;i<=m;i++)
{
while(k&&N[k+1]!=M[i])
k=pi[k];
if(N[k+1]==M[i])
k++;
if(k==n)
{
k=pi[k];
x++;
if(x<=1000)
rez[++j]=i-n;
}
}
printf("%d\n",x);
for(i=1;i<=j;i++)
printf("%d ",rez[i]);
printf("\n");
return 0;
}