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  }

 

你可能感兴趣的:(统计)