POJ 2001 Shortest Prefixes(字典树Trie)
来源:互联网 发布:套料软件破解版靠谱吗 编辑:程序博客网 时间:2024/05/01 08:05
POJ 2001 Shortest Prefixes(字典树Trie)
http://poj.org/problem?id=2001
题意:
给你多个单词组成的词典,现在要你输出每个单词对应的前缀,使得每个前缀唯一。如果不存在唯一前缀就直接输出单词本身。比如字典里面有car 和caraaab 两个单词,那么对于caraaab就输出cara,对于car就输出car。
分析:
直接用所有单词建立字典树,并且字典树节点的v值表示以该节点为根的子树下有多少个单词.
然后对于每个单词查找一遍字典树,顺着当前单词的字母往下走,如果走要一个节点的v值==1,那么就直接输出该节点并返回,否则输出当前的完整单词.
AC代码:1A
#include <iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>using namespace std;const int maxnode=20000+100;const int sigma_size=26;struct Trie{ int ch[maxnode][sigma_size]; int val[maxnode]; int sz; void init() { sz=1; memset(ch[0],0,sizeof(ch[0])); val[0]=0; } void insert(char *s) { int n=strlen(s),u=0; for(int i=0;i<n;i++) { int id=s[i]-'a'; if(ch[u][id]==0) { ch[u][id]=sz; val[sz]=0; memset(ch[sz],0,sizeof(ch[sz])); sz++; } u=ch[u][id]; val[u]++; } } void find(char *s) { int n=strlen(s),u=0; for(int i=0;i<n;i++) { int id=s[i]-'a'; u=ch[u][id]; printf("%c",s[i]); if(val[u]==1) return ; } }}trie;char word[1000][25];int cnt;int main(){ cnt=0; trie.init(); while(scanf("%s",word[cnt])==1) { trie.insert(word[cnt++]); } for(int i=0;i<cnt;i++) { printf("%s ",word[i]); trie.find(word[i]); printf("\n"); } return 0;}
0 0
- POJ 2001 Shortest Prefixes 字典树Trie
- POJ 2001 Shortest Prefixes(字典树Trie)
- POJ 2001 Shortest Prefixes(字典树Trie)
- POJ 2001 Shortest Prefixes 【 trie树(别名字典树)】
- POJ 2001 Shortest Prefixes (字典树 TRIE)
- poj 2001 Shortest Prefixes Trie树
- poj 2001 Shortest Prefixes(Trie树)
- poj 2001 Shortest Prefixes Trie树
- poj 2001 Shortest Prefixes(trie树)
- POJ 2001 - Shortest Prefixes (Trie树)
- poj 2001 Shortest Prefixes(trie树)
- poj -- 2001 Shortest Prefixes (Trie 树)
- POJ-2001 Shortest Prefixes(Trie树)
- poj 2001 Shortest Prefixes (Trie树)
- poj Shortest Prefixes ——trie树、字典树,基础!!
- poj 2001 Shortest Prefixes(Trie)
- poj 2001 Shortest Prefixes trie
- poj 2001 Shortest Prefixes Trie
- 怎样开始一个新的cocos2d-x游戏
- 编译libjpeg-9a时,竟找不到jconfig.h
- 0408学习记录
- 快速排序
- 微信公众平台实战开发视频下载
- POJ 2001 Shortest Prefixes(字典树Trie)
- 安装PHPExcel后运行测试页面报”Class 'ZipArchive' not found“错误的解决方法
- WinEdt破解方法
- 实现随机生成的图片数字验证(OA项目附加_可防止非法注册)
- 无人值守安装的FirstLogonCommands 项
- Ubuntu12.04添加windows字体YaHei Consolas Hybrid
- seo,请控制好你的外链增加速度!
- spring中“类扫描的注解”的使用
- 黑马程序员_OC基础07_类的本质