首页 > 代码库 > HDProblem-1251统计难题

HDProblem-1251统计难题

 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4  5 typedef struct tire 6 { 7     struct tire *next[26];//由于是小写字母,所以26,数字10,大小写字母52 8     int v; 9 }Tire;10 11 Tire *root;        //头指针12 13 void Insert(char *a)14 {15     int len,i;16     Tire *p=root,*q;17     for(i=0;i<strlen(a);i++)18     {19         int id=a[i]-a;20         if(p->next[id]==0)21         {22             q=(Tire *)malloc(sizeof(Tire));//malloc(sizeof( ))表示分配内存空间23             q->v=1;                            //头文件是stdio.h24             for(int j=0;j<26;j++)25                 q->next[j]=0;26             p->next[id]=q;27             p=q;28         }29         else30         {31             p=p->next[id];32             p->v=p->v+1;33         }34     }35 }36 37 int findTire(char *str)38 {39     Tire *p=root;40     for(int i=0;i<strlen(str);i++)41     {42         int id=str[i]-a;43         if(p->next[id]==0)44             return 0;45         else46             p=p->next[id];47     }48     return p->v;49 }50 51 int main()52 {53     int i;54     char temp[12];55     root=(Tire *)malloc(sizeof(Tire));56     for(i=0;i<26;i++)57         root->next[i]=0;58     root->v=2;59     while(gets(temp),strcmp(temp,""))   //stcmp(temp,"")控制空行结束                60         Insert(temp);                     //还可以用line[0]!=‘\0‘代替61     memset(temp,\0,sizeof(temp));62     while(scanf("%s",temp)!=EOF)63         printf("%d\n",findTire(temp));64 }

不太懂的最好看看http://www.cnblogs.com/grubbyskyer/p/3843243.html这篇博客,简单明了