poj 2001

题意:给定一组单词,然后问要怎样的字符串前缀来表示单词,才能没有歧义(要求前缀越短越好)

很明显的一道字典树。我们在node节点里加多一个key值,用来表示当前节点出现了几次。然后每次搜一个单词的缩写时,我们从根节点开始搜,不断输出,知道发现该值为1(这种情况说明只有一个单词出现在这里)。

关于字典树还有一个地方值得注意,一些字典树的写法是,在需要节点时再动态分配(用node*temp=new node()),但这样一次一次的分配会降低效率,一种做法是,直接定义一个足够大的数组,然后用一个top指向当前值(初始化为1),然后每分配一个node,就把top+1,这样能提高代码执行速度,我用第一种时间是32ms,第二种是16ms

代码如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值