百练+Trie数+求字符串前缀的经典模板
来源:互联网 发布:js正则判断数字范围 编辑:程序博客网 时间:2024/05/29 14:30
点击打开链接
#include<stdio.h>#include<stdlib.h>#include<iostream>#include<string.h>#include<cstring>#include<string>#include<math.h>#include<algorithm>#define LL long long#define inf 0x3f3f3f3f#define mod 1e9+7using namespace std;struct Node{ struct Node *next[10];///只有0-9这10个 int isCover, isEnd;};int ok;void clean(Node *p){ memset(p->next,0,sizeof(p->next)); p->isCover = p->isEnd = 0;}void Insert(char *str, Node *root){ Node *p = root; int id; while(*str){ id = *str - '0'; if(p->next[id] == NULL){ p->next[id] = (Node *)malloc(sizeof(Node)); clean(p->next[id]); } p = p->next[id]; if(p->isEnd) ok = 0;///有前缀了,这里标记一波。 ++p->isCover; ++str;///字符串移动一波。 } if(p->isCover > 1) ok = 0; p->isEnd = 1;///字符串最后一个字符的附加信息标记。}void DELETE(Node *p){ for(int i = 0; i < 10; ++i)///典型递归模板,10个表示0-9 if(p->next[i]) DELETE(p->next[i]); free(p);}int main(){ int t, n; char str[12]; scanf("%d", &t); while(t--){ Node *root = (Node *)malloc(sizeof(Node)); scanf("%d", &n); clean(root); ok = 1; while(n--){ scanf("%s", str); if(ok) Insert(str, root); } printf(ok ? "YES\n" : "NO\n");///YES表示没有前缀,NO表示有前缀。 DELETE(root); } return 0;}
0 0
- 百练+Trie数+求字符串前缀的经典模板
- Hiho+Trie数求字符串前缀的典型模板
- Trie树的编程实现,用于计算字符串出现次数,求公共前缀字符串等问题
- 百练 求排列的逆序数
- 【模板】【字符串】Trie(前缀树、字典树)
- 前缀数组Trie刘汝佳模板
- 求公共前缀长度与所选字符串个数的乘积的最大值 Trie树求最值 UVA 11488 Hyper Prefix Sets
- 每日一练之Longest Common Prefix【LeetCode No.14】——求字符串的最长公共前缀
- hdu4552怪盗基德的挑战书 --KMP求字符串所有的前缀数
- 字符串前缀:字典树(Trie)的应用
- 用StringBuffer求两个字符串的前缀
- 有关完全二叉树求节点数和前缀树求字符串是否重复的两道算法题
- [笔记]:[字符串]trie数的基本构造
- 百练 2681 求字符串长度
- 百练---求字符串长度---2681
- 百练_2681:求字符串长度
- trie学习 --HDU1251 输入字符串,统计以这个字符串为前缀的单词数量
- poj 2001/1056 Trie树(求单词表的最短前缀/判断立即码)
- Android手机客户端与服务器端的信息通信交互
- yaf框架控制器中的几个函数
- visio2013产品密钥
- BZoj 1016: [JSOI2008]最小生成树计数【最小生成树】
- 城市中的原始人(二):本能大脑
- 百练+Trie数+求字符串前缀的经典模板
- 1012-L专题三
- Java8新特性Stream API与Lambda表达式详解(1)
- 深入 Docker:容器和镜像
- Scala学习笔记-控制结构
- Mybatis获取插入记录的自增长ID
- AngularJS学习记录-select标签
- 学生信息管理系统学习感想
- 启动、关闭外部进程ShellExecute() 、CreateProcess()、TerminateProcess()、OpenProcess()==