1251 统计难题(字典树)HDU

1251 统计难题(字典树)HDU

 

#include < stdio.h >
#include
< string .h >
#include
< stdlib.h >
struct  dictree  
{   
    
struct dictree *child[26];   
    
int n; 
}
;   
struct  dictree  * newnode()
{
 
int i;
    
struct dictree *t;
    t
=(struct dictree*)malloc(sizeof(struct dictree));
    t
->n=0;
    
for(i=0;i<26;i++)t->child[i]=NULL;
    
return t;
}

struct  dictree  * root; 
int  main()
{
 
char a[1000],b[1000];
 
int i,j,k,l,n;
 
struct dictree *s=newnode(); 
 
//freopen("d:\\abc.txt","w",stdout);
 root=newnode();
 s
=root;
 
while(gets(a))
 
{
  
if(a[0]=='\0')
  
{
   
break;
  }

  l
=strlen(a);
  s
=root;
  
for(i=0;i<l;i++)
  
{
          n
=a[i]-'a';
        
if(s->child[n])
   s
=s->child[n];
        
else 
        
{
            s
->child[n]=newnode();
            s
=s->child[n];                       
        }
 
        s
->n++;
  }

 }

 k
=0;
 j
=0;
 
while(scanf("%s",b)!=EOF)
 
{
  
/**//*if(k)
  printf("\n");
  else
  k++;
*/

  j
=1;
  s
=root;
   
for(i=0;i<strlen(b);i++)
      
{
          n
=b[i]-'a';
         
if(s->child[n])
    s
=s->child[n];
         
else
         
{
          printf(
"0\n");
          j
=0;
          
break;
     }
 
  }

  
if(j)
  printf(
"%d\n",s->n);
 }

}


你可能感兴趣的:(1251 统计难题(字典树)HDU)