题意:

给一些单词,换行键后,查找以后输入的单词作为前缀的话们在之前出现过几次。

思路:

字典树模板----像查字典的顺序一样

#include<string>
#include<stdio.h>
#include<iostream>
using namespace std;
struct tire_node
{
int count;//前缀出现的次数
tire_node* next[27];//指针数组,装指针
bool exit;//是否构成单词
tire_node():count(0),exit(false){//清空,置NULL
for(int i=0;i<=26;i++)
next[i]=NULL;
}
};
void tire_insert(tire_node* root,string &word)//传入字典树根节点 ,单词
{
tire_node* node=root;//定义结构体指针
int len=word.size(),id,i=0;
while(i<len)//遍历单词
{
id=word[i]-'a';
if(node->next[id]==NULL)//如果子节点上没有出现过该字母
node->next[id]=new tire_node();//指向新的结构体指针
node=node->next[id];//将下一个子节点作为父亲节点
i++;//下一个字母
node->count+=1;//统计以这段字符串为前缀的单词
}
node->exit=true;//标记单词
}
int tire_search(tire_node *root,string &word)
{
tire_node* node=root;
int id,len=word.size(),i=0;
while(i<len)
{
id=word[i]-'a';
if(node->next[id]!=NULL)
node=node->next[id];
else
return 0;//该单词没有出现
i++;
}
return node->count;
}
int main()
{
int flag=0;
tire_node* root=new tire_node();
string s;
while(getline(cin , s))//输入字符串
{
if(s.empty())
{
flag=1;
continue;
}
if(!flag)
tire_insert(root,s);
else
// printf("%d\n",tire_search(root,s));运行不成功
cout<<tire_search(root,s)<<endl;
}
return 0;
}

字典树模板 HDU - 1251的更多相关文章

  1. 字典树模板题(统计难题 HDU - 1251)

    https://vjudge.net/problem/HDU-1251 标准的字典树模板题: 也注意一下输入方法: #include<iostream> #include<cstdi ...

  2. HDU - 1251 字典树模板题

    Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).  Input输入数据的第一部 ...

  3. hdu1521(字典树模板)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1251 题意: 中文题诶~ 思路: 字典树模板 代码1: 动态内存, 比较好理解一点, 不过速度略慢, ...

  4. CH 1601 - 前缀统计 - [字典树模板题]

    题目链接:传送门 描述给定 $N$ 个字符串 $S_1,S_2,\cdots,S_N$,接下来进行 $M$ 次询问,每次询问给定一个字符串 $T$,求 $S_1 \sim S_N$ 中有多少个字符串是 ...

  5. HDU 1251 统计难题(字典树模板题)

    http://acm.hdu.edu.cn/showproblem.php?pid=1251 题意:给出一些单词,然后有多次询问,每次输出以该单词为前缀的单词的数量. 思路: 字典树入门题. #inc ...

  6. 【统计难题】【HDU - 1251】【map打表或字典树】【字典树模板】

    思路 题意:题目为中文题,这里不再过多阐述. 思路1:可以在读入单词表的过程中将单词分解,用map将它一 一记录 思路2:利用字典树,这个方法较快些,下面代码中会分别给出数组和结构体指针两种形式的字典 ...

  7. HDU:1251-统计难题(字典树模板,动态建树,静态建树)

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1251 统计难题 Time Limit: 4000/2000 MS (Java/Others) Memor ...

  8. HDU 2072 - 单词数 - [(有点小坑的)字典树模板题]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2072 Problem Descriptionlily的好朋友xiaoou333最近很空,他想了一件没有 ...

  9. hdu 1671 Phone List 字典树模板

    Given a list of phone numbers, determine if it is consistent in the sense that no number is the pref ...

随机推荐

  1. 前端JS题

    题目如下: function Foo() { getName = function () { alert (1); }; return this; } Foo.getName = function ( ...

  2. javascript设计模式--策略模式

    javascript策略模式总结 1.什么是策略模式? 策略模式的定义是:定义一系列的算法,把他们独立封装起来,并且可以相互替换. 例如我们需要写一段代码来计算员工的奖金.当绩效为a时,奖金为工资的5 ...

  3. 前端小姐姐学PHP之(二)

    上次了我们配置好开发环境了,本小节主要讲述内容点: phpStrom的运行环境配置 创建数据库.数据表 连接数据库 一.phpStrom的运行环境配置(windows版) 注:MAC版原文地址 htt ...

  4. 2019年高校微信小程序开发大赛学习笔记

    学做小程序(学堂在线笔记)一.传统布局 text-align:center //水平居中 margin-bottom: 60px //设置间距 二.弹性盒子布局 display:flex; flex- ...

  5. Redis系列五 - 哨兵、持久化、主从

    问:骚年,都说Redis很快,那你知道这是为什么吗? 答:英俊潇洒的面试官,您好.我们可以先看一下 关系型数据库 和 Redis 本质上的区别. Redis采用的是基于内存的,采用的是单进程单线程模型 ...

  6. 【春招】 java static 执行顺序

    package static类型.执行顺序; public class Test { Person person = new Person("Test"); static{ Sys ...

  7. python基础(初识)

      Python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解 ...

  8. LeetCode(239.滑动窗口的最大值

    题目: 给定一个数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到最右侧,你只可以看到滑动窗口内的k个数字.滑动窗口每次只向右移动一位. 返回滑动窗口中的最大值. 示例: 输入: nums = ...

  9. html5 cavans的小应用

    1.canvas鼠标画线,canvas小方块移动,canvas小方块旋转并缩放 <!doctype html> <html> <head> <meta cha ...

  10. 迷你记事本 https://vladocar.github.io/Minimal-Notes/

    迷你记事本 https://vladocar.github.io/Minimal-Notes/