您的位置:首页 > 其它

NYOJ 290 动物统计加强版

2012-08-09 18:29 288 查看
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=290

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

#include<cstring>
#include<cstdio>
#include<iostream>
using namespace std;
struct node{
node *next[26];
int count;
node(){      //构造函数,初始化数据
memset(next,0,sizeof(next));
count=0;
}
};
int maxi;   //用来存放最大出现次数
char maxs[11];//存放出现次数最多的字符串
node *root=new node();
void insert(char *s)//插入新的字符串
{
node *p=root;
int i,k;
for(i=0;s[i];++i){
k=s[i]-'a';
if(p->next[k]==NULL) p->next[k]=new node();//不存在此节点则创建
p=p->next[k];   //移向下一结点
}
p->count++;//此字符串的出现的次数加一
if(p->count>maxi){//更新maxi和maxs
maxi=p->count;
strcpy(maxs,s);
}
}
int main()
{
int n;
char s[11];
scanf("%d",&n);
while(n--){
scanf("%s",s);
insert(s);
}
printf("%s %d\n",maxs,maxi);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: