【POJ】2001 Shortest Prefixes
字典树。
#include <cstdio>
#include <cstring>
#include <cstdlib> #define MAXN 26 typedef struct Trie{
int n;
Trie *next[MAXN];
} Trie; Trie root;
char buf[][]; void create(char str[]) {
int len = strlen(str);
int i, j, id;
Trie *p = &root, *q; for (i=; i<len; ++i) {
id = str[i] - 'a';
if (p->next[id] == NULL) {
q = (Trie *)malloc(sizeof(Trie));
q->n = ;
for (j=; j<MAXN; ++j)
q->next[j] = NULL;
p->next[id] = q;
p = p->next[id];
} else {
p->next[id]->n++;
p = p->next[id];
}
}
} int find(char str[]) {
int len = strlen(str), i, id;
Trie *p = &root; for (i=; i<len; ++i) {
id = str[i] - 'a';
if (p->next[id] == NULL)
return i;
else {
if (p->next[id]->n == )
return i;
p = p->next[id];
}
} return len;
} void del(Trie *t) {
int i; if (t == NULL)
return ;
for (i=; i<MAXN; ++i)
del(t->next[i]); free(t);
} int main() {
int n = ;
int i = , j; for (i=; i<MAXN; ++i)
root.next[i] = NULL;
root.n = -; while (scanf("%s", buf[n]) != EOF) {
create(buf[n]);
++n;
} for (i=; i<n; ++i) {
printf("%s ", buf[i]);
j = find(buf[i]);
buf[i][j+] = '\0';
printf("%s\n", buf[i]);
} return ;
}
【POJ】2001 Shortest Prefixes的更多相关文章
- 【POJ】1704 Georgia and Bob(Staircase Nim)
Description Georgia and Bob decide to play a self-invented game. They draw a row of grids on paper, ...
- 【POJ】1067 取石子游戏(博弈论)
Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后 ...
- POJ 2001 Shortest Prefixes 【 trie树(别名字典树)】
Shortest Prefixes Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 15574 Accepted: 671 ...
- OpenJudge/Poj 2001 Shortest Prefixes
1.链接地址: http://bailian.openjudge.cn/practice/2001 http://poj.org/problem?id=2001 2.题目: Shortest Pref ...
- poj 2001:Shortest Prefixes(字典树,经典题,求最短唯一前缀)
Shortest Prefixes Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 12731 Accepted: 544 ...
- poj 2001 Shortest Prefixes trie入门
Shortest Prefixes 题意:输入不超过1000个字符串,每个字符串为小写字母,长度不超过20:之后输出每个字符串可以简写的最短前缀串: Sample Input carbohydrate ...
- POJ 2001 Shortest Prefixes(字典树活用)
Shortest Prefixes Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 21651 Accepted: 927 ...
- poj 2001 Shortest Prefixes(字典树trie 动态分配内存)
Shortest Prefixes Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 15610 Accepted: 673 ...
- 【BZOJ】【1986】【USACO 2004 Dec】/【POJ】【2373】划区灌溉
DP/单调队列优化 首先不考虑奶牛的喜欢区间,dp方程当然是比较显然的:$ f[i]=min(f[k])+1,i-2*b \leq k \leq i-2*a $ 当然这里的$i$和$k$都是偶数啦~ ...
随机推荐
- 使用Android Studio时so文件打包不到APK中
1,需要在build中添加如下配置,这是必备的 Android { sourceSets { main { jniLibs.srcDirs = ['libs'] ...
- php 这门语言
1,基本语法 php在解析一个文件时,会查找开始和结束标记,在开始标记和结束标记之外的会被php引擎忽略 注释:使用 // 和 /*这里是注释*/ 2,php 数据类型 整形 (2345) 浮点型(3 ...
- IIS7报错:如果要使用托管的处理程序,请安装 ASP.NET
转载至码农SeraphWU IIS7报错:如果要使用托管的处理程序,请安装 ASP.NET 进入CMD 输入如下命令即可 "%WINDIR%\Microsoft.NET\Framework\ ...
- [验证码实现] Captcha 验证码类,一个很个性的验证码类 (转载)
点击下载 Captcha.zip /// <summary> /// 类说明:条码生成类 /// 编 码 人:苏飞 /// 联系方式:361983679 /// 更新网站:[url=htt ...
- cas系列(一)--cas单点登录基本原理
(这段时间打算做单点登录,因此研究了一些cas资料并作为一个系列记录下来,一来可能会帮助一些人,二来对我自己所学知识也是一个巩固.) 一.为什么要实现单点登录 随着信息化不断发展,企业的信息化过程是一 ...
- CI 笔记,使用 json的参考文档(废弃)
Json的处理转换, Json转换步骤, a) 先设置json为空字符串, b) While循环,遍历, While(!!$row = mysql_fetch_arra ...
- python中文问题汇总
1.中文路径 #-*-coding:utf-8-*- path=ur'E:\accumulate\Python\语法\08输入和输出\1.txt' #python内部使用的是unicode,不加前缀u ...
- Object-C内存管理基础
如果你通过手工alloc的方式分配内存实例化创建一个对象,之后你需要release这个对象,同理你也不能手工释放(release)一个能自动释放(autoreleased)的对象,因为这个样子会使你的 ...
- ios专题 - Scrum
什么是Scrum? Scrum是一个敏捷开发框架,是一个增量的.迭代的开发过程.在这个框架中,整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个 Sprint,每个Sprint的建议长度是 ...
- 关于Java的一道内存的题目
import java.util.Arrays; import java.util.EmptyStackException; public class MyStack<T> { priva ...