Trie

记录

1:30 2024-2-7

1. Trie

Trie就是一个边上值为字符的树,我看起来觉得像自动机(应该是吧,读入字符转入不同的阶段)
(对我来说需要强调的地方是 数组真是有用的结构,之前看过的代码中使用的结构都比较繁琐点(例如15445project0那个),毕竟是项目数据结构写明确点比较好理解。追求做"算法"题还是这种表示快)

点击查看代码
// 假设字符串由小写字母构成
int trie[SIZE][26], tot = 1;

// Trie的插入
void insert(char* str) {
	int len = strlen(str), p = 1;
	for (int k = 0; k < len; k++) {
		int ch = str[k]-'a';
		if (trie[p][ch] == 0) trie[p][ch] = ++tot;
		p = trie[p][ch];
	}
	end[p] = true;
}

// Trie的检索
bool search(char* str) {
	int len = strlen(str), p = 1;
	for (int k = 0; k < len; k++) {
		p = trie[p][str[k]-'a'];
		if (p == 0) return false;
	}
	return end[p];
}

题目记录

POJ--3764 The xor-longest Path

posted @ 2024-02-09 23:27  57one  阅读(19)  评论(0编辑  收藏  举报