hdoj1251统计问题
来源:互联网 发布:单页面淘宝客 编辑:程序博客网 时间:2024/06/08 08:34
统计难题
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submission(s): 19905 Accepted Submission(s): 8723
Problem Description
Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).
Input
输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串.
注意:本题只有一组测试数据,处理到文件结束.
注意:本题只有一组测试数据,处理到文件结束.
Output
对于每个提问,给出以该字符串为前缀的单词的数量.
Sample Input
bananabandbeeabsoluteacmbabbandabc
Sample Output
2310
直接套用字典树模版
#include <iostream>#include <cstdio>#include <cstdlib>using namespace std;struct trie{ trie *next[26]; int v;};trie root;void creat_trie(char *s){ trie *p = &root, *q; int i, j; for(i = 0; s[i]; i++) { int id = s[i] - 'a'; if(p->next[id] == NULL) { q = (trie *)malloc(sizeof(trie)); if(q == NULL) { printf("no memory available\n"); exit(1); } for(j = 0; j < 26; j++) { q->next[j] = NULL; } q->v = 1; p->next[id] = q; p = p->next[id]; } else { p->next[id]->v++; p = p->next[id]; } }}int find_trie(char *s){ int i; trie *p = &root; for(i = 0; s[i]; i++) { int id = s[i] - 'a'; p = p->next[id]; if(p == NULL) { return 0; } } return p->v;}int main(){ int i; char str[20]; for(i = 0; i < 26; i++) { root.next[i] = NULL; } while(gets(str) && str[0] != '\0') { creat_trie(str); } while(~scanf("%s", str)) { int ans = find_trie(str); printf("%d\n", ans); } return 0;}
0 0
- hdoj1251统计问题
- 统计难题(hdoj1251)
- HDOJ1251 统计难度 MAP运用
- HDOJ1251-统计难题(trie树入门)
- HDOJ1251 统计难题(字典树)
- 入门字典树 HDOJ1251 统计难题 HDOJ1075 字典翻译
- HDOJ1251 统计难题 Trie树的基本操作
- 统计问题
- 统计问题
- 统计问题
- 统计问题
- 统计问题
- 统计问题
- 统计问题
- 统计问题
- 问题统计
- 统计问题
- 统计问题
- IEnumerable和IEnumerator 详解
- 详解C# 迭代器
- Coroutines in Unity3d (C# version)----在unity3D中的协同(基于C#)
- C#之旅(二): IEnumerable IEnumerator
- Go 语言解面试题1
- hdoj1251统计问题
- Leetcode: Spiral Matrix
- 移动端开发心得(2015.3.1更新)
- poj 3469 Dual Core CPU(最小割)
- Ubuntu下搭建tftp服务器最简单方法 (整理转载)
- Symmetric Tree - Leetcode
- Pass-by-reference in C++ and java
- 浙大机试2008:魔咒词典
- Same Tree - Leetcode