【HDU】 1251 统计难题
2016-01-13 20:53
211 查看
统计难题
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submission(s): 27105 Accepted Submission(s): 10884
Problem Description
Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).
Input
输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串.
注意:本题只有一组测试数据,处理到文件结束.
Output
对于每个提问,给出以该字符串为前缀的单词的数量.
Sample Input
banana band bee absolute acm ba b band abc
Sample Output
2 3 1 0
题解:就是Trie的简单应用,逐个计数就行了。(这个好像要用C++交,G++会超内存不知道为什么)
感觉动态的内存好大...过几天要把静态的也学会。
#include <iostream> #include <cstring> #include <cstdio> #include <cstdlib> using namespace std; struct Trie { Trie *ch[26]; int val; }; struct Trie root; char s[15]; void buildtrie(char *s) { int l=strlen(s),u=0; Trie *p=&root,*q; for (int i=0;i<l;i++) { u=s[i]-97; if (p->ch[u]==NULL) { q=(Trie*)malloc(sizeof(Trie)); q->val=1; for (int j=0;j<26;j++) q->ch[j]=NULL; p->ch[u]=q; p=p->ch[u]; } else { p->ch[u]->val++; p=p->ch[u]; } } } int intrie(char *s) { int l=strlen(s); Trie *p=&root; for (int i=0;i<l;i++) { int u=s[i]-97; if (p->ch[u]==NULL) return 0; p=p->ch[u]; } return p->val; } void dispose(Trie * t) { if (t==NULL) return; else for (int i=0;i<26;i++) if (t->ch[i]!=NULL) dispose(t->ch[i]); free(t); return ; } int main() { for (int i=0;i<26;i++) root.ch[i]=NULL; while (1) { gets(s); if (s[0]=='\0') break; buildtrie(s); memset(s,0,sizeof(s)); } memset(s,0,sizeof(s)); while (scanf("%s",s)!=EOF) { printf("%d\n",intrie(s)); memset(s,0,sizeof(s)); } for (int i=0;i<26;i++) dispose(root.ch[i]); return 0; }
相关文章推荐
- 129 javasript 基本语法和对象
- MYSQL数据库根据data文件中的.frm和ibd文件恢复单表数据
- iOS中你必须了解的多线程
- Unknown debugger type "No engine" Unable to create a debugger engine of the type "No engine"
- 给UIView添加背景图片的方法
- [javascript]页面显示动态时间
- 赋予人工智能记忆的人,带你梳理深度学习核心算法
- IOS-TODOLIST
- Redhat7 CentOS7 无法启动mysql 的解决办法
- 【例子】外键约束的创建及例子
- git用法总结
- iOS----收集的一些小技巧
- git如何正确回滚代码
- iOS中关于动态Tableview中的cell数据传输的多线程问题解决之拙见
- 开发建议
- java视频 坦克大战制作
- 两分钟彻底让你明白Android Activity生命周期(图文)!
- CH MFOI day2男树
- 工程师之路点滴心得
- js的闭包--匿名函数的使用