hdu_1251统计难题(字典树Trie)
统计难题
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)
Total Submission(s): 31479 Accepted Submission(s): 12087
注意:本题只有一组测试数据,处理到文件结束.
band
bee
absolute
acm
ba
b
band
abc
#include <cstdio>
#include <cstring>
#include <malloc.h>
#include <iostream>
using namespace std;
#define MAXN 26
typedef struct Trie {
int v;//根据需要变化
Trie *next[MAXN];
//next是表示每层有多少种类的数,如果只是小写字母,则26即可,
//若改为大小写字母,则是52,若再加上数字,则是62了
} Trie;
Trie root; void createTrie(char *str) {
int len = strlen(str);
Trie *p = &root, *q;
for(int i = ; i < len; i++) {
int id = str[i]-'a';
if(p->next[id] == NULL) {
q = (Trie *)malloc(sizeof(root));
q->v = ;//初始v==1
for(int j = ; j < MAXN; j++)
q->next[j] = NULL;
p->next[id] = q;
p = p->next[id];
} else {
p->next[id]->v++;
p = p->next[id];
}
}
// p->v = -1;//若为结尾,则将v改成-1表示
} int findTrie(char *str) {
int len = strlen(str);
Trie *p = &root;
for(int i = ; i < len; i++) {
int id = str[i]-'a';
p = p->next[id];
if(p == NULL) //若为空集,表示不存以此为前缀的串
return ;
// if(p->v == -1) //字符集中已有串是此串的前缀
// return -1;
}
return p->v;
//return -1; //此串是字符集中某串的前缀
}
int dealTrie(Trie* T) {
//动态字典树,有时会超内存,这是就要记得释放空间了
if(T==NULL)
return ;
for(int i = ; i < MAXN; i++) {
if(T->next[i]!=NULL)
dealTrie(T->next[i]);
}
free(T);
return ;
}
int main() {
char str[];
for(int i = ; i < MAXN; i++)
root.next[i] = NULL;
while(gets(str) && str[]!='\0')
createTrie(str);
memset(str, , sizeof(str));
while(scanf("%s", str) != EOF) {
int ans = findTrie(str);
printf("%d\n", ans);
}
return ;
}
set方法:
#include <cstdio>
#include <iostream>
#include <map>
#include <cstring>
#include <string>
using namespace std; int main()
{
char str[];
map<string, int> m;
while(gets(str))
{
int len = strlen(str);
if (!len)
{
break;
}
for(int i = len; i > ; i--)
{
str[i] = '\0';
m[str]++;
}
}
while(gets(str))
{
cout<<m[str]<<endl;
} return ;
}
hdu_1251统计难题(字典树Trie)的更多相关文章
- hdu 1251 统计难题 (字典树(Trie)<PS:C++提交不得爆内存>)
统计难题Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submis ...
- HDOJ/HDU 1251 统计难题(字典树啥的~Map水过)
Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己 ...
- hdu 1251 统计难题 (字典树入门题)
/******************************************************* 题目: 统计难题 (hdu 1251) 链接: http://acm.hdu.edu. ...
- hdu 1251 统计难题 字典树第一题。
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submi ...
- hdu 1251 统计难题(字典树)
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others) Total Subm ...
- HDU-1251 统计难题,字典树或者map!
统计难题 很久就看过这个题了,但不会~~~不会~~ 题意:给出一张单词表,然后下面有若干查询,每次给出一个单词,问单词表中是否存在以这个单词为前缀的单词,输出数量.本身也是自身的前缀.只有一组数据! ...
- HDU 1251 统计难题 字典树大水题
今天刚看的字典树, 就RE了一发, 字典树原理还是很简单的, 唯一的问题就是不知道一维够不够用, 就开的贼大, 这真的是容易MLE的东西啊, 赶紧去学优化吧. HDU-1251 统计难题 这道题唯一的 ...
- hdoj1251 统计难题 字典树
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submi ...
- HDU 1251统计难题 字典树
字典树的应用. 数据结构第一次课的作业竟然就需要用到树了!!!这不科学啊.赶紧来熟悉一下字典树. 空间开销太大T T #include<cstdio> #include<cstrin ...
随机推荐
- JNI的使用总结初篇
前言:以下内容是个人在写JNI Demo前后进行查找理解总结得出的一些结论,如有错误的地方希望路过的朋友能够指正. 一.JNI是Java native interface的简称,目前就我所知这类方法的 ...
- bzoj 4012: [HNOI2015]开店
Description 风见幽香有一个好朋友叫八云紫,她们经常一起看星星看月亮从诗词歌赋谈到 人生哲学.最近她们灵机一动,打算在幻想乡开一家小店来做生意赚点钱.这样的 想法当然非常好啦,但是她们也发现 ...
- K:正则表达式之进阶
子表达式: 前面所介绍的关于重复匹配的知识,其重复匹配的字符只作用于紧挨着的前一个字符而言,而有时候要将一个集体(姑且用该概念进行称呼)进行重复多遍的进行匹配,则使用前面所介绍的知识,其是无法做到的. ...
- 【自问自答】关于 Swift 的几个疑问
感觉自己给自己释疑,也是一个极为有趣的过程.这次,我还新增了"猜想"一栏,来尝试回答一些暂时没有足够资料支撑的问题. Swift 版本是:4.0.3.不同版本的 Swift,可能无 ...
- perl-5.14.0在新版gcc中编译不通过解决办法
1 由于在新版本中GCC把C99中的标准库分成了libc和libm两个部分,libm中包含一些数学库等,如果要用到libm时,必须加上-lm选项 在解压Configure之后,再在Makefi ...
- Java常用命令与参数设置
我介绍的JDK版本: 首先.介绍下JDK常用参数设置,如下是我个人环境的参数: -Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m 我们 ...
- 12.python进程\协程\异步IO
进程 创建进程 from multiprocessing import Process import time def func(name): time.sleep(2) print('hello', ...
- 【Java框架型项目从入门到装逼】第七节 - 学生管理系统项目搭建
本次的教程是打算用Spring,SpringMVC以及传统的jdbc技术来制作一个简单的增删改查项目,对用户信息进行增删改查,就这么简单. 1.新建项目 首先,打开eclipse,新建一个web项目. ...
- Mongodb常规操作【一】
Mongodb是一种比较常见的NOSQL数据库,数据库排名第四,今天介绍一下Net Core 下,常规操作. 首先下C# 版的驱动程序 "MongoDB.Driver",相关依赖包 ...
- and,or
where语句的and or 连接 $map['_logic'] = 'and'; $map['_logic'] = 'or';