poj 3630 Phone List(依旧Trie~)

来源:互联网 发布:甩棍淘宝挑选 编辑:程序博客网 时间:2024/06/05 02:28

给你几个号码,判断是否其中有一个是另一个的前缀。

 

比如。 

 

911

9110000

 

那么911是9110000的前缀,输出NO。

 

 


 

思路是,用一个字典树存号码。输入一个插入一个。用malloc超时了,所以选择使用静态存储。

插入的时候,如果遇到节点flag不为0,那么说明已经有单词末尾到这个节点了,即已经有单词是现在插入单词的前缀了,标记下。

如果插完后节点的子指针还有不为空的,说民现在插入的单词是之前插入的某个单词的前缀。

比如插入,1129000,再插入112,到2结束,但是2的子指针9不为空,说明已经有单词前面和它一样而且比它长,标记。

另一种思路是,对字符串排序(按长度排,按strcmp都行),然后就不用判断第二种操作了。只可能是前面是后面的前缀。

 


 

 

 

900+MS.。。。险过= =。。

 

 

原创粉丝点击