HDU 1671 Phone List Trie Tree

来源:互联网 发布:windows nginx 自启动 编辑:程序博客网 时间:2024/06/16 18:33


http://acm.hdu.edu.cn/showproblem.php?pid=1671


判断字典中是否有某个字符串是另一个字符串的前缀,Trie Tree 解决。


#include<bits/stdc++.h>using namespace std;const int MAXN = 100000 + 7;int ch[MAXN][26];int val[MAXN];int sz = 1;bool flag = false;void insert_str(string str) { int u = 0, c, tag = 0; for(int i = 0; str[i]; ++i) {  c = str[i] - '0';  if(!ch[u][c]) {   ch[u][c] = sz++;       tag++;  } else if(val[ch[u][c]] != 0) {   flag = true;  }  u = ch[u][c]; } if(!tag) flag = true; val[u]++;}bool query_str(string str) {int u = 0, c;for(int i = 0; str[i]; ++i) { c = str[i] - '0'; if(!ch[u][c]) {  return false; } u = ch[u][c];}return val[u] == 1;}int main(){ios::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);string str;int T;cin >> T;int n;while(T--) {flag = false;sz = 1;fill((int* )ch, (int*)ch + MAXN * 26, 0);fill(val, val + MAXN, 0);cin >> n;//bool flag = false;while(n--) {cin >> str; insert_str(str); } cout << (flag ? "NO" : "YES") << endl;}return 0;}


0 0
原创粉丝点击