POJ 3630 Phone List
2017-03-29 22:07
211 查看
http://poj.org/problem?id=3630
题意:
给出一个电话号码列表,确定它是否一致,即没有数字是另一个的前缀。
思路:
边输入边建立字典树,通过字典树判断某个数是否是另一个的前缀很方便。
题意:
给出一个电话号码列表,确定它是否一致,即没有数字是另一个的前缀。
思路:
边输入边建立字典树,通过字典树判断某个数是否是另一个的前缀很方便。
#include<iostream> #include<algorithm> #include<string> #include<cstring> using namespace std; const int maxn = 100000 + 10; char s[12]; struct Trie { int ch[maxn][10]; int val[maxn]; int sz; void init() { sz = 1; memset(ch[0], 0, sizeof(ch[0])); } bool insert(char *s) { int u = 0, len = strlen(s); int mark = 0; for (int i = 0; i < len; i++) { int c = s[i] - '0'; if (!ch[u][c]) { mark = 1; memset(ch[sz], 0, sizeof(ch[sz])); val[sz] = 0; ch[u][c] = sz++; } u = ch[u][c]; if (val[u] == 1) return false; } val[u] = 1; if (!mark) return false; //如果到字符最后没有开辟新的结点,说明前面已经出现过该串 return true; } }t; int main() { //freopen("D:\\txt.txt", "r", stdin); int T; scanf("%d", &T); while (T--) { int n; scanf("%d", &n); t.init(); bool flag = true; while (n--) { scanf("%s", s); if (flag && !t.insert(s)) flag = false; } if (flag) printf("YES\n"); else printf("NO\n"); } return 0; }
相关文章推荐
- HDU 1671 Phone List(POJ 3630)
- poj 3630(Phone List )
- Phone List POJ 3630 Trie Tree 字典树
- poj--3630--Phone List(字典树+前缀判断)
- POJ——3630 Phone List
- POJ 3630 - Phone List (Trie树)
- Trie树学习小记 Poj 3630 & Hdu1671 Phone List
- poj 3630 Phone List(Trie)
- POJ 3630 Phone List 静态字典树Trietree
- poj 3630(phone list)
- poj 3630 Phone List 贪心
- poj--3630--Phone List(字典树+前缀判断)
- hdu 1672Phone List&&poj 3630Phone List
- poj 3630 Phone List trie
- Phone List POJ - 3630 (字典树或string)
- POJ 3630 Phone List
- POJ-3630 Phone List(字典树)
- POJ 3630 , HDU 1671 Phone List - from lanshui_Yang
- [字典树 ] poj 3630 Phone list
- POJ 3630 Phone List