HDU 1671 字典树 查找前缀
来源:互联网 发布:mysql入门经典pdf下载 编辑:程序博客网 时间:2024/05/16 12:54
题目链接
题意: 若干个电话号码 是否存在某个号码是另一个号码的前缀
将每一个号码都加入一颗字典树中
此时如果这个号码是某个号码的前缀或者某个号码是它的前缀
那么 第一种情况下此号码的节点在某个号码的路径上
第二种情况 在这个号码的路径上存在号码节点
#include <cstdio>#include <iostream>#include <cstring>using namespace std;const int maxnode = 100000 + 50;const int sigma_size = 15;int ch[maxnode][sigma_size];int value[maxnode];int get_idx(char x){ return x - '0';}int sz;void init_Trie(){ sz = 0; memset(value,0,sizeof(value)); memset(ch[0],-1,sizeof(ch[0]));}bool Insert(char* num){ int n = strlen(num); int cur = 0; for(int i = 0;i < n;++i){ int idx = get_idx(num[i]); if(ch[cur][idx] == -1){ sz++; memset(ch[sz],-1,sizeof(ch[sz])); ch[cur][idx] = sz; } cur = ch[cur][idx]; if(value[cur]){ return false; } } value[cur] = 1; for(int i = 0;i < 10;++i){ if(ch[cur][i] != -1){ return false; } } return true;}char N[20];int main(){ int T; scanf("%d",&T); while( T-- ){ init_Trie(); int n;scanf("%d",&n); bool right = true; for(int i = 0;i < n;++i){ scanf("%s",N); if(right){ right = right & Insert(N); } } printf("%s\n",right ? "YES" : "NO"); } return 0;}
0 0
- HDU 1671 字典树 查找前缀
- HDU 1671 (字典树统计是否有前缀)
- HDU 1671 Phone List(字典树寻找前缀)
- HDU 1671-Phone List(字典树-前缀匹配)
- hdu-1251 字典树公共前缀。
- 字典树,HDU 1251 hash前缀
- HDU 1251 字典树 前缀计数
- 字典树(Trie树、单词查找树、前缀树)
- 字典树详解----串查找、排序、公共前缀之杀手锏
- HDU 1671 phone list 数据结构+Trie树(字典树、前缀树)
- HDU 1251 统计难题(字典树,统计前缀个数)
- HDU 3724 Encoded Barcodes(字典树,计算前缀数)
- hdu Phone List 字典树的前缀判断
- HDU 1251 统计难题-字典树-统计前缀个数
- HDU 1251-统计难题(字典树-统计前缀串)
- HDU 1113 字典查找
- 利用字典树查找唯一标记某单词的最小前缀
- 字典树(前缀树)
- Java为什么使用System.arraycopy来操作数组
- (10)比较运算符 (11三元运算符)(12)逻辑运算符
- ubuntu 安装FastDFS v5.05
- Unity3D 通过Get与Post方式与服务器端进行交互
- UVa 11456 - Trainsorting
- HDU 1671 字典树 查找前缀
- UE4项目文件格式关联
- 链表的逆置
- ccf 201503-4 网络延时(求树的直径)
- 在大部分项目中使用到的优秀JAVA第三方库
- HDU-3709-Balanced Number(数位DP+记忆化DFS)
- MySQL5.7.14的免安装配置
- git介绍及使用教程
- Dataset.Tables[0].Select从一个Dataset中提取符合要求的数据