POJ 2001 Shortest Prefixes(字典树)
题目地址:POJ 2001
考察的字典树,利用的是建树时将每个点仅仅要走过就累加。最后从根节点開始遍历,当遍历到仅仅有1次走过的时候,就说明这个地方是最短的独立前缀。然后记录下长度,输出就可以。
代码例如以下:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <queue>
#include <map>
#include<algorithm> using namespace std;
char s[1100][30];
struct node
{
int flag;
node *next[30];
};
node *newnode()
{
int i;
node *p;
p=new node;
for(i=0;i<26;i++)
{
p->next[i]=NULL;
}
p->flag=0;
return p;
}
void insert1(node *root, char *s)
{
int i, len=strlen(s), x;
node *p=root;
for(i=0;i<len;i++)
{
x=s[i]-'a';
if(p->next[x]==NULL)
p->next[x]=newnode();
p=p->next[x];
p->flag++;
}
}
int seach(node *root, char *s)
{
int i, len=strlen(s), x, pos=len;
node *p=root;
for(i=0;i<len-1;i++)
{
x=s[i]-'a';
p=p->next[x];
if(p->flag==1)
{
pos=i+1;
break;
}
}
return pos;
}
int main()
{
node *root;
root =newnode();
int cnt=0, i, j, k;
while(scanf("%s",s[cnt])!=EOF)
{
insert1(root,s[cnt]);
cnt++;
}
for(i=0;i<cnt;i++)
{
printf("%s ",s[i]);
k=seach(root,s[i]);
for(j=0;j<k;j++)
{
printf("%c",s[i][j]);
}
printf("\n");
}
return 0;
}
POJ 2001 Shortest Prefixes(字典树)的更多相关文章
- poj 2001 Shortest Prefixes(字典树trie 动态分配内存)
Shortest Prefixes Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 15610 Accepted: 673 ...
- poj 2001 Shortest Prefixes(字典树)
题目链接:http://poj.org/problem?id=2001 思路分析: 在Trie结点中添加数据域childNum,表示以该字符串为前缀的字符数目: 在创建结点时,路径上的所有除叶子节点以 ...
- poj 2001:Shortest Prefixes(字典树,经典题,求最短唯一前缀)
Shortest Prefixes Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 12731 Accepted: 544 ...
- POJ 2001 Shortest Prefixes 【 trie树(别名字典树)】
Shortest Prefixes Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 15574 Accepted: 671 ...
- POJ 2001 Shortest Prefixes(字典树活用)
Shortest Prefixes Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 21651 Accepted: 927 ...
- 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 (Trie)
题目链接:POJ 2001 Description A prefix of a string is a substring starting at the beginning of the given ...
- poj 2001 Shortest Prefixes trie入门
Shortest Prefixes 题意:输入不超过1000个字符串,每个字符串为小写字母,长度不超过20:之后输出每个字符串可以简写的最短前缀串: Sample Input carbohydrate ...
- poj2001 Shortest Prefixes(字典树)
Shortest Prefixes Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 21642 Accepted: 926 ...
随机推荐
- SQL中 patindex函数的用法
语法格式:PATINDEX ( '%pattern%' , expression ) 返回pattern字符串在表达式expression里第一次出现的位置,起始值从1开始算. pattern字符串在 ...
- 不熟悉的CSS样式
1.font连写: 例如:font:15px/23px "ralewayregular","Helvetica Neue",Helvetica,Arial,sa ...
- Qt Painter放大时,event处理应该注意的要点
比如当你Qt中用QPainter进行window和viewport,逻辑和物理坐标分离的形式进行绘图放大的时候,你会发现鼠标的移动和放大之后的图像有点不跟手,比如你是用QTransform进行放大变换 ...
- jquery mobile navbar
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- WebForm,Winfrom下拉框添加全部行
WebForm: dropPostalLineNo.DataSource = "数据源"; dropPostalLineNo.DataTextField = &quo ...
- 让 zend studio 识别 Phalcon语法并且进行语法提示
让 zend studio 识别 Phalcon语法并且进行语法提示 https://github.com/phalcon/phalcon-devtools/tree/master/ide 下载解压 ...
- 嵌入式 python之str操作
1.字符串的对齐方式:①:center(int[,str])>>> string = 'Fishhat'>>> string.center(55)' ...
- 实验一:基于Winsock完成简单的网络程序开发
第一部分:简答的UDP网络通信程序 // UDP5555.cpp : Defines the entry point for the application. //================== ...
- SpringMVC入门2-注解开发
Spring MVC 注解开发 <context:component-scan base-package="com.controls" /> Springmvc的扫描器 ...
- haskell入门
斯坦福公开课<编程范式>中介绍了Scheme(但是不仅仅是Scheme,它只是作为函数式语言的代表),最后一课介绍了Haskell... “Hello World!”是学习一门语言的魔咒 ...