博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字典树(模型体)
阅读量:4550 次
发布时间:2019-06-08

本文共 1048 字,大约阅读时间需要 3 分钟。

给出n(1<= n && n <= 2*10^6)个字符串,每个字符串只包含小写英文字母,且最多有五个。问这n个字符串中出现次数最多的有多少个。

输入

单组输入。第一行输入一个数字n,接下来n行,每行包含一个字符串。

输出

输出一个数字代表答案。

示例输入

5abaabbwabaz

示例输出

2

提示

 

 

 

 

 

#include <iostream>

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
const int N = 20010;
using namespace std;
struct node
{
  int flag;
  node *next[26];
};
int n,m,ans = 0;
struct node *Creat()
{
  node *p = new node;
  for(int i=0; i<26; i++ )
  {
    p->next[i] = NULL;
  }
  p->flag = 0;
  return p;
}
void INsert( node *root, char *b)
{
  int num;
  int len = strlen(b);
  node *p = root;
  for(int i = 0;i<len;i++)
  {
    num = b[i]-'a';
     if(p->next[num]==NULL)
     {
       p->next[num] = Creat();
     }
     p = p->next[num];
  }
  p->flag++;
  if(p->flag > ans)
    ans = p->flag;
}
void FREE(struct node*root)
{
  for(int i = 0;i<n;i++)
  {
    if(root->next[i]!=NULL)
    {
      FREE(root->next[i]);
    }
  }
  free(root);
}
int main()
{
  char a[N][50],s[50];
  node *p;
     scanf("%d",&m);
     p = Creat();
     for(int i = 0;i<m;i++)
     {
       scanf("%s",s);
       INsert(p,s);
     }
     printf("%d\n",ans);
     FREE(p);
  return 0;
}

转载于:https://www.cnblogs.com/yspworld/p/3885806.html

你可能感兴趣的文章
1035 插入与归并(25 分)
查看>>
STL中排序函数的用法(Qsort,Sort,Stable_sort,Partial_sort,List::sort)
查看>>
数组去重
查看>>
汇报一下这段时间的消失
查看>>
常用同步技术
查看>>
如何解决php 生成验证码图片不显示问题
查看>>
PHP,javascript实现大文件上传
查看>>
c#图像处理算法学习
查看>>
webApi之FromUri和FromBody区别
查看>>
【SoapUI】http接口测试
查看>>
各种工具网站
查看>>
jQuery 回到顶端
查看>>
line-height样式无效,文字不能居中
查看>>
数据库事务
查看>>
xe7 控件升级
查看>>
Delphi IOS (二)
查看>>
TFrame bug
查看>>
刚学习的如何才能自信的拍美美的婚纱照呢(要结婚啦)
查看>>
M51文件注释
查看>>
iOS最牛逼得自定义View方式支持storyboard显示
查看>>