poj 3630 Phone List
2015-03-06 22:28
134 查看
原题链接:http://poj.org/problem?id=3630
字典树的简单应用,具体实现如下:
字典树的简单应用,具体实现如下:
#include<stdio.h> #include<stdlib.h> #include<string.h> typedef char State[12]; typedef struct _trie{ int cnt; struct _trie *next[10]; }trie, *Trie; State st[10002]; trie node[1000000]; int sz = 0; Trie built(){ Trie T = &node[sz++]; memset(T, 0, sizeof(trie)); return T; } void insert(Trie T, char *src){ char *p = src; while (*p != '\0'){ if (T->next[*p - '0'] == NULL) T->next[*p - '0'] = built(); T = T->next[*p - '0']; T->cnt++; p++; } } int search(Trie T, char *src){ char *p = src; while (*p != '\0'){ if (T == NULL || T->next[*p - '0'] == NULL) return 0; T = T->next[*p - '0']; p++; } return T->cnt; } int main(){ #ifdef LOCAL freopen("in.txt", "r", stdin); freopen("out.txt", "w+", stdout); #endif int t, n; State rev; scanf("%d", &t); while (t--){ sz = 0; scanf("%d", &n); Trie root = built(); int k = n, count = 0, flag = 0; while (k--){ scanf("%s", rev); strcpy(st[count++], rev); insert(root, rev); } for (k = 0; k < n; k++){ if (search(root, st[k]) > 1){ printf("NO\n"); flag = 1; break; } } if(!flag) printf("YES\n"); } return 0; }
相关文章推荐
- Phone List POJ - 3630(静态 , 与 动态)
- POJ 3630/HDU 1671 Phone List(字典树)
- POJ 3630 - Phone List (Trie)
- POJ 3630 Phone List 已被翻译
- POJ 3630 Phone List
- POJ 3630:Phone List(字典树入门)
- Poj 3630 Phone List
- poj 3630 Phone List (trie~)
- poj - 3630 - Phone List
- 【原】 POJ 3630 Phone List Trie树 解题报告
- 【POJ 3630】Phone List 中文题意&题解&代码(C++)
- POJ【3630】Phone List
- POJ 3630 Phone List【字典树】
- POJ 3630 Phone List 静态字典树
- poj 3630 Phone List
- POJ 3630 Phone List
- [poj 3630] Phone List trie 树
- poj 3630 phone list
- POJ 3630 && HDU 1671 Phone list(静态字典树)
- POJ 3630 Phone List 【判断串是否是其他串的前缀】