题目链接。

结题报告:

模板题。

我用的动态分配内存。。每一组数据操作完都要释放内存。。否则的话。会Memory Limit Exceeded的。

#include <stdio.h>
#include <stdlib.h>#define MAXN 26typedef struct TrieNode{int flag;struct TrieNode *next[MAXN];
}TrieNode;TrieNode *CreateTrieNode(){TrieNode *p;int i;p = (TrieNode *)malloc(sizeof(TrieNode));p->flag = 0;for(i=0; i<MAXN; i++) p->next[i] = NULL;return p;
}void InsertTrie(TrieNode **T, char *s){TrieNode *p;if(!(p = (*T))) p = (*T) = CreateTrieNode();int i=0, k;for(i=0; s[i]; i++){if(s[i]>='A' && s[i] <= 'Z') k = s[i] -'A'; //大小写不敏感else k = s[i] - 'a';if(!p->next[k]) p->next[k] = CreateTrieNode();p = p->next[k];}p->flag = 1;
}int SearchTrie(TrieNode *T, char *s){TrieNode *p;if(!(p = T)) return 0;int i, k;for(i=0; s[i]; i++){if(s[i] >= 'A' && s[i] <= 'Z') k = s[i] - 'A';else k = s[i] - 'a';if(!p->next[k]) return 0;p = p->next[k];}if(p->flag){p->flag = 0; return 1;}else return 0;
}void ReleaseTrie(TrieNode *T){  //释放内存int i;for(i=0; i<MAXN; i++){if(T->next[i]) ReleaseTrie(T->next[i]);T->next[i] = NULL;}free(T);
}int main(){TrieNode *T;int n, m, i, cnt;char s[20];while(scanf("%d", &n) == 1 && n != 0){scanf("%d", &m);cnt = 0; T = NULL;for(i=0; i<n; i++){scanf("%s", s);InsertTrie(&T, s);cnt++;}for(i=0; i<m; i++){scanf("%s", s);if(SearchTrie(T, s)) cnt--;}printf("%d\n", cnt);ReleaseTrie(T);}return 0;
}

转载于:https://www.cnblogs.com/tanhehe/archive/2013/02/20/2918099.html

SDUT1500Message Flood(字典树)相关推荐

  1. oj1500(Message Flood)字典树

    大意:输入几个字符串,然后再输入几个字符串,看第一次输入的字符串有多少没有在后面的字符串中出现(后输入的字符串不一定出现在之前的字符串中) #include <stdio.h> #incl ...

  2. hdu5296 01字典树

    根据二进制建一棵01字典树,每个节点的答案等于左节点0的个数 * 右节点1的个数 * 2,遍历整棵树就能得到答案. AC代码: #include<cstdio> using namespa ...

  3. BZOJ 3483 SGU505 Prefixes and suffixes(字典树+可持久化线段树)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3483 [题目大意] 给出一些串,同时给出m对前缀后缀,询问有多少串满足给出的前缀后缀模 ...

  4. 2014百度之星 Xor Sum(字典树+贪心)

    题目在HDU_OJ Problem Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometh ...

  5. HDU6964 I love counting (字典树+莫队)

    题意: 给定一个长度为 nnn 的序列c,qc,qc,q 次询问,每次给出l,r,a,bl,r,a,bl,r,a,b求在[l,r][l,r][l,r]中有多少种不同的值 kkk 满足 k⊕a≤b​.k ...

  6. Beautiful Subarrays (01字典树 瞎搞)

    题意: 题解: 一看问的是子序列,并且还是异或. 首先想到01字典树,再一看让你求子序列的个数,大致是想让你把这个序列进行前缀异或处理后然后再01字典树上进行操作吧. 假设01字典树往左边是0右边是1 ...

  7. CF888G Xor-MST (01字典树+MST)

    题意: 给你n个数,每个数有一个值. 问你这n个数的最小生成树为多少,两点之间的边权为异或值. 题解: 参考了洛谷上的一个题解,总觉得这样的时间复杂度会爆炸,但是确确实实没爆炸. 我们每次去合并两个点 ...

  8. Perfect Security (01字典树删除点)

    题意: 第一行给你一个n 第二行给你n个数字 分别是a[1],a[2]-a[n]. 第三行给你n个数字 分别是b[1],b[2]-b[n]. 问:第三行的序列可自由排列,要求排列之后的顺序 a[1] ...

  9. Vitya and Strange Lesson (01字典树)

    题意:给定一组数,然后对所有的数进行异或操作m次异或操作,问你每次操作后,没有出现过的最小的非负整数 题解: 首先需要一个性质(ab)c=a(bc); 所以我们没有必要对于所有的数进行异或操作. 我们 ...

  10. 奶牛异或(01字典树)

    题意: 让你找一个连续区间异或和最大,如果有相同的,则输出断点较小的. 题解: 01字典树,利用前缀和的思想进行求解,我们在插入前缀的同时,也在不断的更新最大值. 我们查询当前 二进制字符串与已经插入 ...

最新文章

  1. C++ 函数--幽径初探索
  2. JVM之类加载器ClassLoader
  3. 创建下标为1-10的整形数组
  4. 深耕“工业互联网”,华为云持续开花
  5. Windows下打开Url 代码封装 C++
  6. Github html文件在线预览方法
  7. 【数据分享】错颌畸形生长患者治疗数据集
  8. zookeeper保证单一视图
  9. 证:单层感知机不能表示异或逻辑
  10. 为笔记本添加固态硬盘以及之后的分区方法分享
  11. 计算机专硕_2021年北京科技大学计算机专硕考研初复试考研经验分享、择校备考分析指导...
  12. 用有限差分和牛顿法解非线性微分方程(边值问题)-python
  13. 文档中的文字太紧凑,word行间距怎么调整?
  14. 数值计算笔记之迭代法的收敛性
  15. java-jsp-nutz基础周测
  16. Google登录和facebook登录相关
  17. 用C语言比较三个数的大小
  18. 阿里Java面试必问:java爬虫框架使用排行
  19. mongodb---foursquare
  20. 怎么生成windows上的ico图标

热门文章

  1. 如何在内存中存储有序数据?
  2. mysql explain select_type
  3. Zephyr下使用TFLite进行语音识别
  4. rabbitmq消息持久化,避免异常情况下,消息会丢失
  5. ubuntu中文乱码--添加中文字符集
  6. 2016-08-12
  7. POJ 1088 滑雪 (动规)
  8. STM32打印log--使用J-Link RTT Viewer
  9. 简易效率的抽奖算法(转)
  10. 依次将10个数输入,要求打印出其中最大的数