【POJ2001】Shortest Prefixes
来源:互联网 发布:湖州美工培训学校 编辑:程序博客网 时间:2024/06/05 05:38
题目链接:http://poj.org/problem?id=2001
题意:给出若干字符串,求每一个字符串的最短唯一表示前缀
题解:
一看这种找前缀的东西肯定是trie
插入的时候每路过一个点,cnt++
查询的时候走到第一个cnt=1即可,如果没有,就输出这个串
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;char str[1010][25];int nxt[25010][26],cnt[25010];int n,num=1;void insert(char *s){ int len=strlen(s+1),t=1; for(int i=1;i<=len;i++) { if(nxt[t][s[i]-'a']==0) nxt[t][s[i]-'a']=++num; cnt[nxt[t][s[i]-'a']]++; t=nxt[t][s[i]-'a']; }}void search(int k,char *s){ int len=strlen(s+1),t=1; for(int i=1;i<=len;i++) { if(cnt[nxt[t][s[i]-'a']]==1) { for(int j=1;j<=i;j++) printf("%c",str[k][j]); printf("\n"); return; } t=nxt[t][s[i]-'a']; } printf("%s\n",str[k]+1); return;}int main(){// freopen("in.in","r",stdin);// freopen("out.out","w",stdout); while(~scanf("%s",str[++n]+1)) insert(str[n]); for(int i=1;i<=n;i++) { printf("%s ",str[i]+1); search(i,str[i]); } return 0;}
阅读全文
0 0
- POJ2001 Shortest Prefixes
- poj2001 Shortest Prefixes
- 【poj2001】Shortest Prefixes
- POJ2001--Shortest Prefixes
- poj2001 Shortest Prefixes
- poj2001 Shortest Prefixes
- POJ2001 Shortest Prefixes
- poj2001 Shortest Prefixes
- 【POJ2001】Shortest Prefixes
- POJ2001[Shortest Prefixes]--Trie
- POJ2001-Shortest Prefixes
- POJ2001 - Shortest Prefixes - 字典树
- POJ2001——Shortest Prefixes
- POJ2001 Shortest Prefixes【字典树】
- 【poj2001】Shortest Prefixes 字典树
- POJ2001 Shortest Prefixes(字典树)
- poj2001 Shortest Prefixes (trie树)
- poj2001 Shortest Prefixes trie树
- UIViewContentMode详解
- More Effective C++之Item M11:禁止异常信息(exceptions)传递到析构函数外
- uniq
- mybatis Error querying database. Cause: org.apache.ibatis.type.TypeException: Could not set paramet
- 新技术
- 【POJ2001】Shortest Prefixes
- JS学习(13)----eventlistener
- RAID介绍
- 分解质因数(5分)
- MyBatis错题分析
- HDU-5961 传递(暴力)
- springMVC 请求404错误或静态资源无法访问
- C++开源大全
- 如何关闭账号自动同步?