Pagini recente » Cod sursa (job #2487853) | Cod sursa (job #2052387) | Cod sursa (job #2962868) | Cod sursa (job #797951) | Cod sursa (job #229300)
Cod sursa(job #229300)
#include<stdio.h>
#include<string.h>
#define NMAX 10000010
#define NMAX2 30
int n,m;
char b[NMAX],d[50010][NMAX2];
struct nod
{
char key;
nod *a,*b,*c;
};
nod *dict;
nod* insereaza(char ch,nod *p)
{
nod *q=new nod();
q->key=ch;
q->a=q->b=q->c=NULL;
if(ch=='a')
if(p->a==NULL)
p->a=q;
else
q=p->a;
else
if(ch=='b')
if(p->b==NULL)
p->b=q;
else
q=p->b;
else
if(ch=='c')
if(p->c==NULL)
p->c=q;
else
q=p->c;
return q;
}
int main()
{
FILE *f;
nod *p;
int i,j;
f=fopen("abc2.in","r");
dict=new nod();
dict->a=dict->b=dict->c=NULL;
if(f==NULL)return -1;
fscanf(f,"%s\n",b);
fscanf(f,"%s\n",d[1]);
m=strlen(d[1]);
p=dict;
n=2;
for(i=0;i<m;i++)
p=insereaza(d[1][i],p);
while(!feof(f))
{
fscanf(f,"%s\n",d[n]);
p=dict;
for(i=0;i<m;i++)
p=insereaza(d[n][i],p);
n++;
}
int contor=0;
int lung=strlen(b);
for(i=0;i<lung-m;i++)
{
p=dict;
for(j=i;j<=i+m&&p!=NULL;j++)
{
if(b[j]=='a')
p=p->a;
else
if(b[j]=='b')
p=p->b;
else
if(b[j]=='c')
p=p->c;
}
if(j==i+m)contor++;
}
freopen("abc2.out","w",stdout);
printf("%d",contor);
return 0;
}