字典树模板 HDU - 1251
题意:
给一些单词,换行键后,查找以后输入的单词作为前缀的话们在之前出现过几次。
思路:
字典树模板----像查字典的顺序一样
#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的更多相关文章
- 字典树模板题(统计难题 HDU - 1251)
https://vjudge.net/problem/HDU-1251 标准的字典树模板题: 也注意一下输入方法: #include<iostream> #include<cstdi ...
- HDU - 1251 字典树模板题
Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀). Input输入数据的第一部 ...
- hdu1521(字典树模板)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1251 题意: 中文题诶~ 思路: 字典树模板 代码1: 动态内存, 比较好理解一点, 不过速度略慢, ...
- CH 1601 - 前缀统计 - [字典树模板题]
题目链接:传送门 描述给定 $N$ 个字符串 $S_1,S_2,\cdots,S_N$,接下来进行 $M$ 次询问,每次询问给定一个字符串 $T$,求 $S_1 \sim S_N$ 中有多少个字符串是 ...
- HDU 1251 统计难题(字典树模板题)
http://acm.hdu.edu.cn/showproblem.php?pid=1251 题意:给出一些单词,然后有多次询问,每次输出以该单词为前缀的单词的数量. 思路: 字典树入门题. #inc ...
- 【统计难题】【HDU - 1251】【map打表或字典树】【字典树模板】
思路 题意:题目为中文题,这里不再过多阐述. 思路1:可以在读入单词表的过程中将单词分解,用map将它一 一记录 思路2:利用字典树,这个方法较快些,下面代码中会分别给出数组和结构体指针两种形式的字典 ...
- HDU:1251-统计难题(字典树模板,动态建树,静态建树)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1251 统计难题 Time Limit: 4000/2000 MS (Java/Others) Memor ...
- HDU 2072 - 单词数 - [(有点小坑的)字典树模板题]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2072 Problem Descriptionlily的好朋友xiaoou333最近很空,他想了一件没有 ...
- hdu 1671 Phone List 字典树模板
Given a list of phone numbers, determine if it is consistent in the sense that no number is the pref ...
随机推荐
- scrapy爬虫-代理IP中间件
class ProxyDownloaderMiddleware(object): # Not all methods need to be defined. If a method is not de ...
- JavaScript学习总结之数组常用的方法和属性
先点赞后关注,防止会迷路寄语:没有一个冬天不会过去,没有一个春天不会到来. 前言数组常用的属性和方法常用属性返回数组的大小常用方法栈方法队列方法重排序方法操作方法转换方法迭代方法归并方法总结结尾 前言 ...
- react-native 使用leanclound消息推送
iOS消息推送的基本流程 1.注册:为应用程序申请消息推送服务.此时你的设备会向APNs服务器发送注册请求.2. APNs服务器接受请求,并将deviceToken返给你设备上的应用程序 3.客户端应 ...
- emmet快速缩写展开的基本写法与心得
emmet的基本写法: .ct 点是class <div class="ct"></div> #ct 井号是id <div id="ct&q ...
- 使用nestjs集成grpc具体操作
两个程序中, 提供grpc服务的称为服务端, 调用grpc服务的为客户端, 以下是grpc服务端和客户端的代码编写 1. 创建两个nestjs项目demo1(端口: 3000)和demo2(端 ...
- 【colab pytorch】使用tensorboard可视化
import datetime import torch import torch.nn as nn import torch.nn.functional as F import torch.opti ...
- python第一次作业
import turtle turtle.pensize(2) turtle.pencolor("black") turtle.fillcolor("red") ...
- ggplot2练习
图源于电力电子课本65页——电容滤波的单相不可控整流电路. f<-function(w,d) { l<-w/sqrt(w^2+1)*exp(-atan(w)/w)*exp(-d/w) r& ...
- Latex数学符号对应表
1. 希腊字母 字母 实现 字母 实现 $\alpha$ \alpha $\Alpha$ \Alpha $\beta$ \beta $\Beta$ \Beta $\gamma$ \gamma $\Ga ...
- C++ 结构体sturct练习
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> struct Student { ];// 姓名 int id; //id int a ...