HDU 1251 字典树
2015-06-18 21:06
246 查看
题意:中文题。。。问你某个单词是多少单词的前缀
思路:很裸的字典树。。。人生第一次用。。。
思路:很裸的字典树。。。人生第一次用。。。
#include <cstdio> #include <cstring> using namespace std; #define REP( i, a, b ) for( int i = a; i < b; i++ ) struct Trie{ int va; Trie *next[26]; Trie(int va) : va(va) { REP(i, 0, 26) next[i] = NULL; } }; void CreatTrie(Trie *root, char *str){ Trie *p = root; int len = strlen(str); REP(i, 0, len){ int id = str[i] - 'a'; if(p -> next[id] == NULL){ Trie *q = new Trie(1); p -> next[id] = q; p = p -> next[id]; } else{ p -> next[id] -> va++; p = p -> next[id]; } } } int FindTrie(Trie *root, char *str){ Trie *p = root; int len = strlen(str); REP(i, 0, len){ int id = str[i] - 'a'; if(p -> next[id] == NULL) return 0; p = p -> next[id]; } return p -> va; } int main() { //freopen("in.txt", "r", stdin); char str[15]; Trie *root = new Trie(0); while(gets(str) && strcmp(str, "\0")) CreatTrie(root, str); while(~scanf("%s", str)) printf("%d\n", FindTrie(root, str)); return 0; }
相关文章推荐
- Spring技术内幕——Spring Framework的IOC容器实现(四)
- asp.net 打印控件使用方法
- 《梦断代码》阅读笔记Ⅱ
- oracle中层次查询
- Install Python 3 on CentOS 6.5
- windows下实现UDP
- smarty中应用mb_substr()截取字符串
- java基础 第6章类再生
- Android快速入门(转自 农民伯伯: http://www.cnblogs.com/over140/)
- 4105: [Thu Summer Camp 2015]平方运算
- 返回二维数组最大子数组的和(2)
- Redis 2.8 配置文件说明
- TC Srm524 Div 1 T3
- Dynamic Programming | Set 2 (Optimal Substructure Property)
- 总结应用发布
- Android基于TrafficStats实现实时流量统计
- Linux 如何新增驱动模块
- HMM/MEMM/CRF
- 架构师速成4-幼儿园
- 我的Hook学习笔记