Pagini recente » Cod sursa (job #658484) | Cod sursa (job #2893560) | Cod sursa (job #3151648) | Cod sursa (job #165883) | Cod sursa (job #251325)
Cod sursa(job #251325)
#include <iostream.h>
#include <fstream.h>
#include <string.h>
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
char a[2000],b[2000];
long poz[1005];
int s,sb[2000],n,m,nr;
int verif(int i)
{int j;
for (j=n-1;j>=0;j--, i--)
if (a[j]!=b[i]) return 0;
return 1;
}
int main()
{int i;
fin.get(a,100,'\n');
fin>>b;
n=strlen(a);
m=strlen(b);
s=(int)a[0];
sb[0]=(int)b[0];
for (i=1;i<n;i++)
{s+=(int)a[i];
sb[i]=(int)b[i]+sb[i-1];
}
for (i=n;i<m;i++)
sb[i]=sb[i-1]+(int)b[i]-(int)b[i-n];
for (i=n;i<m;i++)
if (sb[i]==s)
if (verif(i))
{nr++;
if (nr<=1000)
poz[nr]=i;
}
fout<<nr<<'\n';
for (i=1;i<=1000 && i<=nr;i++)
fout<<poz[i]-n+1<<" ";
fout.close();
return 0;
}