HDU 1251统计难题
统计难题
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)
Total Submission(s): 36458 Accepted Submission(s): 13569
注意:本题只有一组测试数据,处理到文件结束.
band
bee
absolute
acm
ba
b
band
abc
3
1
0
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统计难题的更多相关文章
- hdu 1251 统计难题(字典树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1251 统计难题 Time Limit: 4000/2000 MS (Java/Others) M ...
- HDU 1251 统计难题 (Trie)
pid=1251">统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/ ...
- hdu 1251 统计难题 (字典树入门题)
/******************************************************* 题目: 统计难题 (hdu 1251) 链接: http://acm.hdu.edu. ...
- HDU 1251 统计难题(Trie模版题)
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others) Total Subm ...
- hdu 1251:统计难题(字典树,经典题)
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submi ...
- hdu 1251 统计难题 trie入门
统计难题 Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本 ...
- [ACM] hdu 1251 统计难题 (字典树)
统计难题 Problem Description Ignatius近期遇到一个难题,老师交给他非常多单词(仅仅有小写字母组成,不会有反复的单词出现),如今老师要他统计出以某个字符串为前缀的单词数量(单 ...
- HDU 1251 统计难题 (字符串-Trie树)
统计难题 Problem Description Ignatius近期遇到一个难题,老师交给他非常多单词(仅仅有小写字母组成,不会有反复的单词出现),如今老师要他统计出以某个字符串为前缀的单词数量(单 ...
- hdu 1251:统计难题[【trie树】||【map】
<题目链接> 统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131 ...
随机推荐
- Spring 5 新特性:函数式Web框架
举例 我们先从示例应用程序的一些摘录开始.下面是暴露Person对象的响应信息库.很类似于传统的,非响应信息库,只不过它返回Flux<Person>而传统的返回List<Person ...
- IOS 设置导航栏全局样式
// 1.设置导航栏背景 UINavigationBar *bar = [UINavigationBar appearance]; [bar setBackgroundImage:[UIImage r ...
- Oracle数据库监听服务无法启动
(1) 安装好Oracle后,启动Net Manager,测试orcl失败,报错“ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务”,需要修改监听文件.修改前: # list ...
- PHP正则表达式模式修饰符 /i, /is, /s, /isU等
模式修饰符 下面列出了当前可用的 PCRE 修饰符.括号中提到的名字是 PCRE 内部这些修饰符的名称. 模式修饰符中的空格,换行符会被忽略,其他字符会导致错误. i (PCRE_CASELESS) ...
- java面试题个人总结
1.重载和重写的区别重写:发生在父子类中,方法名.参数列表必须相同,返回值小于等于父类,抛出的异常小于等于父类,访问修饰符大于等于父类:如果父类方法访问修饰符为private则子类中就不是重写.2.j ...
- H5全屏滚动专题页最佳实践
1.slip.js + rem.js 主要插件: slip.js github: https://github.com/binnng/slip.js rem.js 插件为阿里淘宝的 rem 实现的基础 ...
- 将Excel数据导入数据库
Excel如下,这页工作表名叫“线路” 数据库表如下 using System; using System.Collections.Generic; using System.Linq; using ...
- java网络流传输,中文乱码问题。
最近需要从某个网页上抓取数据.一波三折. 1. 先要找到网站页面调用后台数据服务的url地址,但是本人对js不了解,花了不少时间在分析其网页源代码的js部分,试图寻找出调用数据的链接. 后来得知浏览器 ...
- MongoDB是一个介于关系数据库和非关系数据库之间的产品
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型.M ...
- 通过反射获得 spring 的 RequestMapping value值
package demo import java.lang.reflect.Method; import org.springframework.web.bind.annotation.Request ...