Pagini recente » Cod sursa (job #236631) | Cod sursa (job #2669865) | Cod sursa (job #2782784) | Cod sursa (job #1143716) | Cod sursa (job #1022399)
#include<stdio.h>
#include<string.h>
char A[2000001],B[2000001],poz[1001],cnt,bad[256];
int main()
{
FILE *f=fopen("strmatch.in","r");
FILE *g=fopen("strmatch.out","w");
fscanf(f,"%s%s",A,B);
int la=strlen(A);
int lb=strlen(B);
for(int i=0;i<256;i++)
bad[i] = la;
for(int i=0;i<la-1;i++)
bad[A[i]]=la-i-1;
char*p = B;
int i;
while(lb>=la)
{
for( i=la-1;p[i]==A[i];i--)
if(i==0)
{
if(cnt<1000)
{
cnt++;
poz[cnt]= p - B;
}
}
lb-=bad[p[la-1]];
p+=bad[p[la-1]];
}
fprintf(g,"%d\n",cnt);
int min = cnt>1000 ? 1000:cnt;
for(i=1;i<=min;i++)
fprintf(g,"%d ",poz[i]);
}