NYOJ 290 动物统计加强版

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=290

经典的字典树的问题,代码几乎可以来当模版来用了,就留下来了~~~,不过貌似用运算符重载排序(不知道是不是)也能过。。。。。。。。需要注意的是开辟一个新的内存时下一个指针一定要指向NULL;

 1 #include<cstring>
 2  #include<cstdio>
 3  #include<iostream>
 4  using namespace std;
 5  struct node{
 6      node *next[26];
 7      int count;
 8      node(){      //构造函数,初始化数据 
 9          memset(next,0,sizeof(next));
10          count=0;
11      }
12  };
13  int maxi;   //用来存放最大出现次数 
14  char maxs[11];//存放出现次数最多的字符串 
15  node *root=new node();
16  void insert(char *s)//插入新的字符串 
17  {
18      node *p=root;
19      int i,k;
20      for(i=0;s[i];++i){
21          k=s[i]-'a';
22          if(p->next[k]==NULL) p->next[k]=new node();//不存在此节点则创建 
23          p=p->next[k];   //移向下一结点 
24      }
25      p->count++;//此字符串的出现的次数加一 
26      if(p->count>maxi){//更新maxi和maxs 
27          maxi=p->count;
28          strcpy(maxs,s);
29      }
30  }
31  int main()
32  {
33      int n;
34      char s[11];
35      scanf("%d",&n);
36      while(n--){
37          scanf("%s",s);
38          insert(s);
39      }
40      printf("%s %d\n",maxs,maxi);
41      return 0;
42  }

 

posted on 2012-08-09 18:29  mycapple  阅读(352)  评论(0编辑  收藏  举报

导航