nyoj动物统计字典树
发布日期:2021-06-29 11:14:05
浏览次数:2
分类:技术文章
本文共 1798 字,大约阅读时间需要 5 分钟。
动物统计加强版时间限制:3000 ms | 内存限制:150000 KB难度:4描述在美丽大兴安岭原始森林中存在数量繁多的物种,在勘察员带来的各种动物资料中有未统计数量的原始动物的名单。科学家想判断这片森林中哪种动物的数量最多,但是由于数据太过庞大,科学家终于忍受不了,想请聪明如你的ACMer来帮忙。输入第一行输入动物名字的数量N(1<= N <= 4000000),接下来的N行输入N个字符串表示动物的名字(字符串的长度不超过10,字符串全为小写字母,并且只有一组测试数据)。 输出输出这些动物中最多的动物的名字与数量,并用空格隔开(数据保证最多的动物不会出现两种以上)。 样例输入10boarpigsheepgazellesheepsheepalpacaalpacamarmotmole样例输出sheep 3
#include#include #include #include #include #include using namespace std;const int MAXSIZE = 26;struct trieNode { int count; //记录该节点代表的单词的个数 trieNode * childrenNode[MAXSIZE]; };trieNode * root;trieNode * createTrieNode();void trieInsert(trieNode * root, char * str);//插入一个字符串 int trieSearch(trieNode * root, char * str);//查找一个字符串出现的次数 int main() { int length, judge, max_ = -9999999; char str[15], tempStr[15]; trieNode * root = createTrieNode();//创建字典树根节点 scanf("%d", &length); for (int i = 0; i < length; i++) { scanf("%s", str); trieInsert(root, str); judge = trieSearch(root, str); if (judge > max_) { max_ = judge; strcpy(tempStr, str); } //printf("%d\n", trieSearch(root, str)); } printf("%s %d\n", tempStr, max_); return 0;}trieNode * createTrieNode() { trieNode * tempNode = new trieNode(); tempNode->count = 0; for (int i = 0; i < MAXSIZE; i++) tempNode->childrenNode[i] = NULL; return tempNode;}void trieInsert(trieNode * root, char * str) { trieNode * node = root; char * p = str; while (*p) { if (node->childrenNode[*p - 'a'] == NULL) { node->childrenNode[*p - 'a'] = createTrieNode(); } node = node->childrenNode[*p - 'a']; p++; } node->count += 1;}int trieSearch(trieNode * root, char * str) { trieNode * node = root; char * p = str; while (*p && node != NULL) { node = node->childrenNode[*p - 'a']; p++; } if (node == NULL) return 0; else return node->count;}
转载地址:https://blog.csdn.net/ZWHSOUL/article/details/79925976 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月03日 09时02分14秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Vim中的代码折叠功能(基本命令)
2019-04-29
一个完整的java程序,应该包含哪些部分
2019-04-29
使用CSDN-markdown编辑器(效果)
2019-04-29
C++封装成Jni库的详细步骤
2019-04-29
使用CSDN-markdown编辑器(格式)
2019-04-29
win10注册ocx控件的步骤(包含错误处理方法0x80040200)
2019-04-29
终于开通个人公众号啦!
2019-04-29
如何给CSDN博客添加微信公众号二维码或自定义栏目
2019-04-29
C/C++中near和far的区别
2019-04-29
linux和windows下的“回车符”和“换行符”
2019-04-29
MSXML错误输出&VS2015 win32程序使用大内存 (>2GB)设置
2019-04-29
VC++“内存资源不足,无法完成此操作”——解决的心路历程(User对象)
2019-04-29
GetLastError返回值及其含义
2019-04-29
windows资源管理(内核对象/GDI对象/user对象)
2019-04-29
0xc000007b——应用程序无法正常启动
2019-04-29
VSS使用方法详解
2019-04-29
VC工程从Win32环境往Win64环境迁移的经验总结
2019-04-29
VS报错error C2872:“IXMLDOMDocumentPtr”为不明确的符号?
2019-04-29