Hdu 1251 统计难题
来源:互联网 发布:淘宝个人主页动态删除 编辑:程序博客网 时间:2024/09/21 08:17
统计难题
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submission(s): 27702 Accepted Submission(s): 11074
Problem Description
Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).
Input
输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串.
注意:本题只有一组测试数据,处理到文件结束.
注意:本题只有一组测试数据,处理到文件结束.
Output
对于每个提问,给出以该字符串为前缀的单词的数量.
Sample Input
bananabandbeeabsoluteacmbabbandabc
Sample Output
2310
Author
Ignatius.L
思路:简单题目,tries树的模板题目,注意下提交的时候选择c++,不要选g++就行了,原因我还在研究中
AC代码如下:
#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int seg_size=26;struct Tries{ Tries *next[seg_size]; int cnt; void init(){ memset(next,0,sizeof(next)); cnt=0; }}*root;Tries* createNode(){ Tries *tmp=new Tries(); tmp->init(); return tmp;}void Insert(char *p,Tries *root){ while(*p){ int id=*p-'a'; if(root->next[id]==NULL){ root->next[id]=createNode(); } root=root->next[id]; (root->cnt)++; p++; }}int Search(char *p,Tries *root){ while(*p){ int id=*p-'a'; root=root->next[id]; if(root==NULL) return 0; p++; } return root->cnt;}int main(){ root=createNode(); char str[12]; bool flag=false; while(gets(str)){ if(flag){ printf("%d\n",Search(str,root)); } else{ if(strlen(str)){ Insert(str,root); } else flag=true; } } return 0;}
0 0
- HDU 1251 统计难题
- HDU 1251 统计难题
- hdu 1251 统计难题
- HDU 1251:统计难题
- HDU 1251 统计难题
- Hdu-1251 统计难题
- hdu 1251 统计难题
- hdu 1251 统计难题
- hdu 1251 统计难题
- HDU-1251-统计难题
- HDU 1251 统计难题
- hdu 1251统计难题
- hdu 1251统计难题
- hdu 1251 统计难题
- HDU 1251 统计难题
- hdu 1251统计难题
- HDU 1251 统计难题
- hdu 1251 统计难题
- 递归把十六进制(字符串表示)转换称十进制数
- Maven实现直接部署Web项目到Tomcat7
- php实现mysql备份
- Environment Variables
- ORACLE的一些常用操作
- Hdu 1251 统计难题
- ViewPager实现导航
- mysql中utf-default collation
- opencv(5)
- 【Lua学习笔记】 --> 《类型与值、表达式与基本语法》
- 实现键盘弹出时,显示Emoji按钮的功能
- 记录imp导入用户导到sys用户删除
- 杭电1026——Ignatius and the Princess I(BFS)
- Swift 扩展(extension)