OpenJudge/Poj 2001 Shortest Prefixes
1.链接地址:
http://bailian.openjudge.cn/practice/2001
http://poj.org/problem?id=2001
2.题目:
Shortest Prefixes
Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 12208 Accepted: 5210 Description
A prefix of a string is a substring starting at the beginning of the given string. The prefixes of "carbon" are: "c", "ca", "car", "carb", "carbo", and "carbon". Note that the empty string is not considered a prefix in this problem, but every non-empty string is considered to be a prefix of itself. In everyday language, we tend to abbreviate words by prefixes. For example, "carbohydrate" is commonly abbreviated by "carb". In this problem, given a set of words, you will find for each word the shortest prefix that uniquely identifies the word it represents.In the sample input below, "carbohydrate" can be abbreviated to "carboh", but it cannot be abbreviated to "carbo" (or anything shorter) because there are other words in the list that begin with "carbo".
An exact match will override a prefix match. For example, the prefix "car" matches the given word "car" exactly. Therefore, it is understood without ambiguity that "car" is an abbreviation for "car" , not for "carriage" or any of the other words in the list that begins with "car".
Input
The input contains at least two, but no more than 1000 lines. Each line contains one word consisting of 1 to 20 lower case letters.Output
The output contains the same number of lines as the input. Each line of the output contains the word from the corresponding line of the input, followed by one blank space, and the shortest prefix that uniquely (without ambiguity) identifies this word.Sample Input
carbohydrate cart carburetor caramel caribou carbonic cartilage carbon carriage carton car carbonateSample Output
carbohydrate carboh cart cart carburetor carbu caramel cara caribou cari carbonic carboni cartilage carti carbon carbon carriage carr carton carto car car carbonate carbonaSource
Rocky Mountain 2004
3.思路:
4.代码:
1 //2010-05-09 2 //create by wuzhihui 3 #include<iostream> 4 #include <cstdio> 5 #include <cstdlib> 6 7 8 using namespace std; 9 10 #define chars 26 11 #define MAXCONTENT 1002 12 #define MAXLENGTH 21 13 14 15 typedef struct TrieNode 16 { 17 int num; 18 TrieNode *next[chars]; 19 }TrieNode,*TrieTree; 20 char str[MAXCONTENT][MAXLENGTH]; 21 22 TrieTree root=NULL; 23 24 void insert(char *s) 25 { 26 int k=0; 27 28 if(root==NULL) 29 { 30 root=(TrieTree)malloc(sizeof(TrieNode)); 31 root->num=0; 32 for(k=0;k<chars;k++) root->next[k]=NULL; 33 } 34 TrieTree p=root; 35 36 int i=0; 37 int index; 38 while(s[i]!='\0') 39 { 40 index=s[i]-'a'; 41 if(p->next[index]==NULL) 42 { 43 p->next[index]=(TrieTree)malloc(sizeof(TrieNode)); 44 p->next[index]->num=0; 45 for(k=0;k<chars;k++) p->next[index]->next[k]=NULL; 46 } 47 p=p->next[index]; 48 p->num++; 49 i++; 50 } 51 } 52 53 void search(char *s) 54 { 55 int i=0,index; 56 TrieTree p=root; 57 while(s[i]!='\0') 58 { 59 index=s[i]-'a'; 60 p=p->next[index]; 61 putchar(s[i]); 62 if(p->num==1) break; 63 i++; 64 } 65 putchar('\n'); 66 } 67 int main() 68 { 69 int size=0,i; 70 //int n=12; 71 while(scanf("%s",str[size])!=EOF) 72 //while(n-- && scanf("%s",str[size])!=EOF) 73 { 74 insert(str[size]); 75 size++; 76 } 77 for(i=0;i<size;i++) 78 { 79 printf("%s ",str[i]); 80 search(str[i]); 81 } 82 //system("pause"); 83 return 0; 84 }
转载于:https://www.cnblogs.com/mobileliker/p/3581257.html
OpenJudge/Poj 2001 Shortest Prefixes相关推荐
- [poj 2001] Shortest Prefixes (字典树)
Language: Shortest Prefixes Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 20503 Accepte ...
- poj 2001 Shortest Prefixes(特里)
主题链接:http://poj.org/problem?id=2001 Description A prefix of a string is a substring starting at the ...
- Poj 2001 Shortest Prefix(字典树模板)
字典树入门题...... 只需在对应结点记录num值,找到num为1时的前缀,是唯一前缀(只是该单词的前缀),或者一直找找到该单词结尾. #include <iostream> #incl ...
- 【POJ - 2001 】Shortest Prefixes (字典树,查询重复前缀区间)
题干: A prefix of a string is a substring starting at the beginning of the given string. The prefixes ...
- OpenJudge/Poj 1915 Knight Moves
1.链接地址: http://bailian.openjudge.cn/practice/1915 http://poj.org/problem?id=1915 2.题目: 总Time Limit: ...
- OpenJudge/Poj 2027 No Brainer
1.链接地址: http://bailian.openjudge.cn/practice/2027 http://poj.org/problem?id=2027 2.题目: 总Time Limit: ...
- OpenJudge/Poj 1163 The Triangle
1.链接地址: http://bailian.openjudge.cn/practice/1163 http://poj.org/problem?id=1163 2.题目: 总时间限制: 1000ms ...
- OpenJudge/Poj 1226 Substrings
1.链接地址: http://bailian.openjudge.cn/practice/1226/ http://poj.org/problem?id=1226 2.题目: 总时间限制: 1000m ...
- Shortest Prefixes
poj2001:http://poj.org/problem?id=2001 题意:给你一些单词,然后让你寻找每个单词的一个前缀,这个前缀能够唯一表示这个单词,并且是最短的. 题解:直接用trie树来 ...
最新文章
- 用Pytorch给你的母校做一个样式迁移吧!
- Activiti操作数据库中文乱码
- Javascript学习笔记12——Ajax入门
- tensorflow随笔-条件语句-tf.case
- qt中根据数据解析的结果动态的创建控件并布局
- 【干货】TCP/IP协议三次握手四次挥手
- php7的核心开发者,php7 五大新特性
- BeautifulSoup([your markup]) to this: BeautifulSoup([your markup], lxml) 解决未设置默认解析器的错误...
- 一图读懂resnet神经网络
- 画画不只是为了艺考,还能成为一门手艺~
- 计算机编程的地位,学习编程的重要性
- 找靓机用计算机表白,找靓机怎么样-2300元的鼠标用起来怎么样?Finalmouse Ultralight Phantom体验...
- 分层结构的生活例子_分层处理,各个击破(案例分析)
- Photoshop滤镜给城市夜空添加满天星光
- hashCode()和哈希值
- JVM笔记(三):垃圾回收篇
- 【python学习笔记】25:scipy中值滤波
- springboot添加切面
- Tuscany是什么?为什么要用Tuscany命名SCA规范的实现?
- Barcode读取之barcode_para_contrast_min.hdev
热门文章
- 大专生如何报考MBA
- windows 7 全屏游戏解决方案
- [树组BIT]训练两题重新理解ver.
- MySQL · 捉虫动态 · event_scheduler 慢日志记错
- [译] 解密 Airbnb 的数据科学部门如何构建知识仓库
- Windows Mobile 设备中心 for vista 一览
- LLVM笔记(1) - TableGen
- Go语言开发者福利 - 国内版 The Go Playground
- Linux 常用命令标记
- 《javascript高级程序设计》笔记:内存与执行环境