随笔分类 -  数据结构

动态字典树_字串标记查找+大数(HDU_4099)
摘要:#include #include #include using namespace std;#define MU 10#define WLEN 100#define M 100000struct node{ int id; node *child[MU]; node() { id = -1; memset(child,NULL,sizeof(child)); }};char fnMap[3][WLEN] = {"1","1"};void clear(node *root){ for(int i=0; ichild[i] != N... 阅读全文
posted @ 2013-07-30 19:07 lk1993 阅读(193) 评论(0) 推荐(0)
动态字典树_字串查找匹配(HDU_1075)
摘要:#include #include #define M 3002#define MU 26#define WLEN 12struct node{ char to[WLEN]; node *child[MU]; node() { to[0] = '\0'; memset(child,NULL,sizeof(child)); }};char getTr[M],findEd[WLEN];void clear(node *root){ for(int i=0;ichild[i] != NULL) clear(root... 阅读全文
posted @ 2013-07-27 15:00 lk1993 阅读(229) 评论(0) 推荐(0)
动态字典树+DFS(HDU_1298)
摘要:#include #include #define MU 26#define WLEN (100 + 2)struct node{ int pr; node *child[MU]; node() { pr = 0; memset(child,NULL,sizeof(child)); }};char findStr[WLEN],temp[WLEN];char findMap[][5] = {"","","abc","def","ghi","jkl","mno" 阅读全文
posted @ 2013-07-27 13:41 lk1993 阅读(198) 评论(0) 推荐(0)
动态字典树_拆分查找(HDU_1247)
摘要:#include #include #define M 26#define WordSize 32#define WordCount 50000struct node{ int end; node *child[M]; node() { end = 0; memset(child,NULL,sizeof(child)); }};char map[WordCount][WordSize];void insert(node *root, char *str){ node *p = root; int len = strlen(s... 阅读全文
posted @ 2013-07-22 22:06 lk1993 阅读(215) 评论(0) 推荐(0)
动态字典树_统计前缀子串(HDU_1251)
摘要:#include #include #define M 26struct node{ int count; node *child[M]; node() { count = 0; memset(child,NULL,sizeof(child)); }};void clear(node *root){ for(int i=0; ichild[i] != NULL) clear(root->child[i]); } delete root;}void insert(node *root, char *... 阅读全文
posted @ 2013-07-22 21:11 lk1993 阅读(213) 评论(0) 推荐(0)
动态字典树_统计子串(HDU_2846)
摘要:解题思路:这一题要求我们找到输入的词是字典中多少个词的子串,而不仅仅是其前缀,因此建树的时候需要将词典中词分解成不同前缀加入到树中,即是说将形如abc的词拆成abc,bc,c,三种形式,这样就相当于找输入的词是词典中多少词的前缀,需要注意的是,对于同一个词分解出的多个前缀,如果他们之间有相同的话,这种前缀,只算作一种,即是说形如abca之类的词,会分解出abca,a两种前缀,但因为是同一个词分解出来的,所以算作一种。判断是否是同一个词分解出来的需要给每个输入的词及其分解出的前缀加以相同的id进行编号。#include #include #define M 26struct node{ i... 阅读全文
posted @ 2013-07-22 20:35 lk1993 阅读(335) 评论(0) 推荐(0)
动态字典树_前缀相互查找(HDU_1671)
摘要:/*注意: 911911123这组数据可以得到正确的答案 911123 911对于这组数据就判断失误了用一个标记变量flag来标记插入过程中是否有重新创建节点*/#include #include #include #define M 10struct node{ int end; node *child[M]; node() { end = 0; memset(child,NULL,sizeof(child)); }};void clear(node *root){ for(int i=0;ichild[i] != NULL) ... 阅读全文
posted @ 2013-07-22 19:17 lk1993 阅读(158) 评论(0) 推荐(0)