poj2001 trie

简介:
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int T[100100][26] = {0}, num[100100] = {0}, sz = 0;
char s[1010][21];
void Insert(char *s){
	int u = 0;
	for (int i = 0; s[i]; i++){
		int c = s[i] - 'a';
		if (!T[u][c])
			T[u][c] = ++sz;
		u = T[u][c];
		num[u] ++;
	}
}
void Search(char *s){
	int u = 0;
	for (int i = 0; s[i]; i++){
		if (num[u] == 1) break;
		u = T[u][s[i] - 'a'];
		printf("%c", s[i]);
	}
	printf("\n");
}
int main(){
	int n = 0;
	while (scanf("%s", s[++n]) == 1)
		Insert(s[n]);
	for (int i = 1; i <= n; i++){
		printf("%s ", s[i]);
		Search(s[i]);
	}
	    
    return 0;
	
} 

相关文章
|
6月前
|
Java
POJ- 2367- Genealogical tree【拓扑排序】
POJ- 2367- Genealogical tree【拓扑排序】
20 0
|
存储 C++
【LeetCode208】实现Trie(前缀树)
这里的前缀树,即“二十六叉树”,但是对于每个结点(对象),我们可以隐性存储一个字符——每个结点(对象)含有一个size为26的指针数组。接着就从根结点开始遍历判
117 0
【LeetCode208】实现Trie(前缀树)
【HDU 4786 Fibonacci Tree】最小生成树
一个由n个顶点m条边(可能有重边)构成的无向图(可能不连通),每条边的权值不是0就是1。 给出n、m和每条边的权值,问是否存在生成树,其边权值和为fibonacci数集合{1,2,3,5,8...}中的一个。
1065 0
|
Java
hdu1251 统计难题 【字典树】
统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others) Total Submission(s): 19292    Accepted Submission(s): ...
746 0