统计难题

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)
Total Submission(s): 36458    Accepted Submission(s): 13569

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树。

trie树的节点

struct trie_node
{
int count;        //统计前缀的数目
trie_node * next[26];  //二十六个子节点
bool exict;        //是否为单词的结尾
}*root;

说到底trie树就是一颗26叉树,孩子有顺序,分别表示‘a'到’z'。

根节点不表示字符,也就是说字符是从根节点的孩子开始表示的。

每插入一个单词就判断下一个字母是否已经建立节点,建立了则进入,没有就插入节点。插入完整个单词后,更改exict为1;

查找时,从根节点开始判断下一个字母对应的节点是否存在,存在进入,否则判断有该前缀的单词个数为0。查找完整个前缀后,返回后缀最后一个字母对应的count值。

——————————————————————————————————————————————————————
 #include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm> using namespace std;
struct trie_node
{
int count;
trie_node * next[];
bool exict;
}*root;
trie_node * create_tn()
{
trie_node * tp=new(trie_node);
tp->count=;
memset(tp->next,,sizeof(tp->next));
tp->exict=;
return tp;
}
void insert(char *word)
{
trie_node * p=root;
char *q=word;
while(*q)
{
int id=*q-'a';
if(p->next[id]==NULL)
p->next[id]=create_tn();
p=p->next[id];
++q;
p->count++;
}
p->exict=;
}
int search(char *word)
{
trie_node *p=root;
char *q=word;
while(*q)
{
int id=*q-'a';
p=p->next[id];
q++;
if(p==NULL)return ;
}
return p->count;
}
int main()
{
root=create_tn();
char s[];
bool bz=;
while(gets(s))
{
if(bz)printf("%d\n",search(s));
else
{
if(strlen(s)!=)
insert(s);
else bz=;
}
}
return ;
}

HDU 1251统计难题的更多相关文章

  1. hdu 1251 统计难题(字典树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1251 统计难题 Time Limit: 4000/2000 MS (Java/Others)    M ...

  2. HDU 1251 统计难题 (Trie)

    pid=1251">统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/ ...

  3. hdu 1251 统计难题 (字典树入门题)

    /******************************************************* 题目: 统计难题 (hdu 1251) 链接: http://acm.hdu.edu. ...

  4. HDU 1251 统计难题(Trie模版题)

    统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others) Total Subm ...

  5. hdu 1251:统计难题(字典树,经典题)

    统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)Total Submi ...

  6. hdu 1251 统计难题 trie入门

    统计难题 Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本 ...

  7. [ACM] hdu 1251 统计难题 (字典树)

    统计难题 Problem Description Ignatius近期遇到一个难题,老师交给他非常多单词(仅仅有小写字母组成,不会有反复的单词出现),如今老师要他统计出以某个字符串为前缀的单词数量(单 ...

  8. HDU 1251 统计难题 (字符串-Trie树)

    统计难题 Problem Description Ignatius近期遇到一个难题,老师交给他非常多单词(仅仅有小写字母组成,不会有反复的单词出现),如今老师要他统计出以某个字符串为前缀的单词数量(单 ...

  9. hdu 1251:统计难题[【trie树】||【map】

    <题目链接> 统计难题                        Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131 ...

随机推荐

  1. 总结一下 input propertychange

    最近做的一些项目,经常遇到输入框检查的需求,最常见的是即时搜索,今天好好小结一下. ========================================================== ...

  2. Android开发:程序目录结构详解

    HelloWorld程序的目录结构概述 我们可以在文件夹中看到,HelloWorld程序的目录主要包括:src文件夹.gen文件夹.Android文件夹.assets.res文件夹. AndroidM ...

  3. 新手上路,配置阿里云CentOS服务器LAMP

    最近出了个9.9包月的阿里云一直想弄就买了个半年的,脑子一热选了个CentOS系统的然后就是无尽的代码...... 话不多说直接上步骤:  在实例中选择"连接管理终端",输入一些应 ...

  4. centos 7 用yum安装 mysql

    首先centos7 已经不支持mysql,因为收费了你懂得,所以内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb,以下为卸载mariadb,安 ...

  5. cx_Oracle 中文乱码问题解决

    设置NLS_LANG环境变量 import os os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'

  6. 常用的dos命令

    cd 进入一个目录 cd .. 返回上一个目录 dir 遍历目录 上下键 查找输入过的命令 Tab键 命令自动补齐

  7. Objective - C NSArray不可变数组和NSMutableArray可变数组

    OC中存储数据最常用 的两个容器就是数组和字典,而作为最常用的,应该了解这所有的特点,及用法. OC中的数组是一个容量,有序的管理了一系列元素,并且存放在数组里的元素,必须是对象类型. 不可变数组,见 ...

  8. 用CMake构建Qt5的Visual Studio工程

    使用Visual Studio构建Qt工程的方法有很多种,可以使用Visual Studio自带的功能手动创建配置工程,也可以创建pro文件,然后通过VS的Qt插件导入进行创建.还有一种方式是通过CM ...

  9. CubieTruck上安装mjpg_streamer

    最近手头项目需要用到一个上位机,需要在上位机上实现远程访问及视频监控.其中视频监控采用了网上资料较多的mjpg_streamer进行视频处理.在使用中遇到许多坑也一并记录下来. 首先安装依赖环境和检测 ...

  10. NTFS u盘支持 - centos6

    uname -r bash-4.1# uname -r2.6.32-431.el6.x86_64 ---- http://repository.it4i.cz/mirrors/repoforge/re ...