Description
cloudiris是个爱学习的好孩子,每天她都会记单词,可她一翻开单词书看到如此之多的单词就感到头疼,于是她想出了一个和别人不相同的记单词的方法。她把单词归类分成几组,每一组单词的开头几个字母都是相同的,现在她需要根据给出的这组单词找出每个单词的最短前缀来唯一的标识这个单词。例如: carburetor 和carbohydrate 的最短前缀分别是carbu和carbo ,而carburetor 和car的最短前缀分别是carb和car
Input
一组单词 ,每个单词一行,一共不超过1000行,每个单词由不超过20个小写字母组成,没有两个单词完全相同。
Output
对应于每个单词输出此单词的最短前缀,一个前缀一行。
Sample Input
carbohydrate
cart
carburetor
caramel
caribou
Sample Output
carbo
cart
carbu
cara
cari
Source
dreamzk
字典树,先建树,然后在对于每个单词,从树的根节点开始向下遍历单词所在路径,如果单词中某个字母只出现一次,则从第0层到此层为此单词的前缀,否则前缀为单词本身
代码:
#include<iostream> using namespace std; #define Max 26 #define N 50000 char a[1005][26]; struct TrieNode{ int nCount; TrieNode *next[Max]; }; TrieNode Memory[N]; int allocNum=0; TrieNode *NewNode() { TrieNode *tmp=&Memory[allocNum++]; for(int i=0;i<Max;i++) tmp->next[i]=NULL; tmp->nCount=0; return tmp; } void InsertString(TrieNode *root,char *s) { int len=strlen(s); TrieNode *tmp=root; for(int i=0;i<len;i++) { if(tmp->next[s[i]-'a']==NULL) tmp->next[s[i]-'a']=NewNode(); tmp->next[s[i]-'a']->nCount++; tmp=tmp->next[s[i]-'a']; } } void FindPrefix(TrieNode *root,char *s) { int len=strlen(s); TrieNode *tmp=root; for(int i=0;i<len;i++) { printf("%c",s[i]); if(tmp->next[s[i]-'a']->nCount==1) break; tmp=tmp->next[s[i]-'a']; } printf("\n"); } int main() { int cnt=0; TrieNode *root=NewNode(); while(~scanf("%s",&a[cnt])) InsertString(root,a[cnt++]); for(int i=0;i<cnt;i++) FindPrefix(root,a[i]); }
相关推荐
BOJ的题目1023. Ancient Keyboard解法 源代码
boj 上08 09 年复试模拟题的答案
boj:算法
JAVA_BOJ
Algorithm-BOJ.zip,BekJon在线法官(Java,Kotlin,SWIFT)和PS路线图,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
BOJ
Algorithm-BOJ-PSJ.zip,Baykon在线判断JAVA问题解决方法(第二章),算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
Algorithm-BOJ-AutoCommit.zip,当您解决baekjoon online judge的问题时,它会自动提交并推送到远程存储库。,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
Algorithm-boj-auto-submit.zip,日本央行cli提交脚本,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
资源分类:Python库 所属语言:Python 资源全名:boj-0.0.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
通过这本图画书展示您的创造力,其中包括Boj和朋友。 一本有趣的,全数字化且可重复使用的着色书,可用于 通过这本图画书展示您的创造力,其中包括Boj和朋友。 一本有趣的全数字可重复使用的图画书,专为孩子,父母...
解决问题 Boj.kr
欢迎来到PS_BOJ 이곳은... J이한BOJ문제들의AC코드들이입니다。 안내 :check_mark: C ++ Python으로풀이합니다。 :check_mark: ++ C ++풀이하며 long long 필요하거나으으으으으으으으으끔씩만끔씩만끔씩만끔씩만...
BOJ:日本央行