hdu 1671 Phone List 字典树
来源:互联网 发布:剑三脸型数据怎么导入 编辑:程序博客网 时间:2024/06/06 07:20
题目:判断输入的电话号码中是否有号码是其他号码的前缀。
方法:很裸的字典树。在判断一个字符串是否是某个字符串的前缀时,就判断该字符串所属的节点(深度最大的那个)是否还有子节点就好了。
代码:
var n,a1,i,l,t:longint; str:array[1..10000] of string; a:array[1..100000] of longint; s:array[1..100000] of char; son:array[1..100000,1..10] of longint; flag:boolean;procedure insert(x:longint;str:string);var i:longint;begin if str='' then exit; for i:=1 to a[x] do if s[son[x,i]]=str[1] then begin delete(str,1,1); insert(son[x,i],str); exit; end; inc(a1); inc(a[x]); a[a1]:=0; son[x,a[x]]:=a1; s[a1]:=str[1]; delete(str,1,1); insert(a1,str);end;function find(x:longint;str:string):boolean;var i:longint;begin if str='' then if a[x]>0 then exit(true) else exit(false); for i:=1 to a[x] do if s[son[x,i]]=str[1] then begin delete(str,1,1); find:=find(son[x,i],str); exit; end;end;begin readln(t); for l:=1 to t do begin readln(n); a1:=1; a[1]:=0; for i:=1 to n do begin readln(str[i]); insert(1,str[i]); end; flag:=true; for i:=1 to n do if find(1,str[i]) then begin flag:=false; break; end; if flag then writeln('YES') else writeln('NO'); end;end.
0 0
- hdu 1671 Phone List 字典树
- [字典树 ] hdu 1671 phone list
- hdu 1671 Phone List(字典树)
- 【字典树】hdu 1671 Phone List
- Hdu 1671 Phone List 字典树
- hdu 1671 Phone List (字典树)
- HDU 1671 Phone List(字典树Trie)
- HDU 1671 Phone List 字典树
- 字典树 HDU- 1671 Phone List
- HDU-#1671 Phone List(字典树)
- hdu 1671 Phone List (字典树)
- hdu 1671 Phone List(字典树)
- HDU 1671 Phone List(字典树)
- HDU 1671 Phone List(字典树Trie)
- hdu 1671 Phone List 字典树
- HDU 1671 Phone List 字典树
- hdu 1671 Phone List 字典树
- hdu 1671 phone list(字典树)
- C++新增数据类型long long ,unsigned long long
- 使用VAssistX的好处
- 《算法竞赛入门经典2ndEdition 》例题5-4 反片语(Ananagrams, Uva156)
- 整数划分
- jQuery使用$.ajaxFileUpload上传
- hdu 1671 Phone List 字典树
- 非递归DFS
- Android广播的静态与动态注册
- oracle11g dataguard failover重建后归档日志没有被应用被NO的问题
- 20151229 053 30-60
- tinyos学习笔记9--TestRPL(UDP)例程分析
- IOS开发系列----Objective-c的内存管理
- java 序列化相关
- Java必要基础理解