POJ2001Shortest Prefixes(Trie树)
题目大意:求最短唯一前缀
题解:Trie树 把单词一个个插入,每个字母节点v[]++;然后输出时输出到v[]为1的点,
v[]=1说明只有这个单词经过。
代码 :
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 100009
using namespace std; int n,cnt; int trie[N*][],v[N]; char s[N][]; void insert(int x)
{
int root=,len=strlen(s[x]);
for(int i=;i<len;i++)
{
int id=s[x][i]-'a';
if(trie[root][id]==) trie[root][id]=++cnt;
root=trie[root][id];
v[root]++;
}
} void find(int x)
{
cout<<s[x]<<" ";
int root=,len=strlen(s[x]);
for(int i=;i<len;i++)
{
int id=s[x][i]-'a';
//cout<<"---"<<trie[root][id]<<endl;
if(v[root]==) break;
cout<<s[x][i];
root=trie[root][id];
}
printf("\n");
} int main()
{
while(scanf("%s",s[++n])!=EOF){insert(n);}
for(int i=;i<=n;i++) find(i);
return ;
}
POJ2001Shortest Prefixes(Trie树)的更多相关文章
- POJ2001Shortest Prefixes[Trie]
Shortest Prefixes Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 17683 Accepted: 768 ...
- POJ2001Shortest Prefixes(字典树)
题目大意就是帮你给N条字符串,每条长度不超过20.问要将他们单一识别出来,每个字符串最短可以缩为多短. 如: abc abcdefg bc adef 这四个字符串就可分别缩写为 abc abcd b ...
- poj2001 Shortest Prefixes (trie树)
Description A prefix of a string is a substring starting at the beginning of the given string. The p ...
- POJ 2001 Shortest Prefixes 【 trie树(别名字典树)】
Shortest Prefixes Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 15574 Accepted: 671 ...
- POJ 2001 Shortest Prefixes 【Trie树】
<题目链接> 题目大意: 找出能唯一标示一个字符串的最短前缀,如果找不出,就输出该字符串. 解题分析: Trie树的简单应用,对于每个单词的插入,都在相应字符对应的节点 num 值+1 , ...
- POJ2001 Shortest Prefixes (Trie树)
直接用Trie树即可. 每个节点统计经过该点的单词数,遍历时当经过的单词数为1时即为合法的前缀. type arr=record next:array['a'..'z'] of longint; w: ...
- Trie 树 及Java实现
来源于英文“retrieval”. Trie树就是字符树,其核心思想就是空间换时间. 举个简单的例子. 给你100000个长度不超过10的单词.对于每一个单词,我们要判断他出没出现过,如果出现 ...
- poj 2001 Shortest Prefixes trie入门
Shortest Prefixes 题意:输入不超过1000个字符串,每个字符串为小写字母,长度不超过20:之后输出每个字符串可以简写的最短前缀串: Sample Input carbohydrate ...
- 基于trie树做一个ac自动机
基于trie树做一个ac自动机 #!/usr/bin/python # -*- coding: utf-8 -*- class Node: def __init__(self): self.value ...
随机推荐
- 深入解析ReentrantReadWriteLock
前言: 在Java的锁中很多锁都是同一时刻只允许一个线程访问,今天就来看看一个特殊的锁——读写锁.它的特殊之处就在于同一时刻可以运行多个读线程访问或者有一个写线程在访问.能够大大的提高并发性和吞吐量 ...
- SQL保留2位小数
truncate(num, 位数); );
- VM虚拟机安装无法将值写入注册表.....请确认你是否有足够的权限访问该注册表项,或者与技术支持人员联系。
解决方法: 关掉360安全卫士等软件再安装
- CodeForces - 460C(二分+差分)
题意 https://vjudge.net/problem/CodeForces-460C 一个长度为 n 的序列 a ,你有 m 次操作的机会,每次操作是将其中连续的 w 个元素增加 1 .最大化最 ...
- spring boot 2.2.0开始freemarker模板默认扩展名改为ftlh了
2.2.0这个版本刚发布的时候更新到了这个版本,然后使用freemarker 的webapp运行报错. 查了spring boot的changelog,搜freemarker查到了这条.ftlh,使f ...
- [读论文]Shading-aware multi view stereo
如何实现refine的? 几何误差和阴影误差如何加到一起? 为了解决什么问题? 弱纹理或无纹理:单纯的多视图立体算法在物体表面弱纹理或者无纹理区域重建完整度不够高,精度也不够高,因此结合阴影恢复形状来 ...
- RTX5的汽车级,工业级,医疗和铁路安全认证已经通过,证书已颁发
说明: 1.当前RTX5的教程已经在制作中,使用CMSIS-RTOS V2封装层,含FreeRTOS,配套V7,V6和V5板子. 2.我们各种开发板和模块的资料汇总贴,搞了个cnblogs,临时先用 ...
- Jsoup解析Xml{详解}
1: 概述 * 代码: //2.1获取student.xml的path String path = JsoupDemo1.class.getClassLoader().getResource(&qu ...
- 什么是StatefulSet
简单说来,StatefulSet其实就是一种升级版的Deployment,大体工作原理如下 1.为每个Pod名字按顺序编号,按顺序启动 # kubectl get po -o wide -l app= ...
- C#-Excel导入工资条群发邮箱
第一次写随笔,一名在实习的程序猿,做的一个小应用,需要的朋友可以参考参考, 使用WinForm实现了一个导入Excel,群发工资条的功能.功能已经实现,还不够完善,. 大致运用了OleDbConnec ...