Phone Numbers

题目来源

完整思路流程:

题意是给定以长度不超过100的数字串,给定一个数字对字母的转化表,给定一些单词,求最少用几个单词组成数字串。

 

第一种:用Trie树把所有的单词载入,再对数字串在Trie树搜索,结果TLE.

第二种:看discuss上说BFS和DP, 感觉如果数据是特意构造的话会TLE,随机数据可能会过。

 

然后发现在考虑第一种方法时应该考虑到的

预处理的两种方法:1,把数字转化为相应的字母(一对多)

                           2,把所有的单词的字母转化成相应的数字(多对一)

显然第2种方法比第一种处理起来简单多了,但在考虑第一种方法的时候自己居然没有想到第二种(忌心浮气躁),直到第二种

的时候才想到(失策);

 

因为数字字符串长度不是很大,的每个字符看成一个节点如果每个单词从第i个节点起于数字串完全匹配,则添加一从i到j的边

再记录所需的信息,

动态规划方程 f[i] = Min (f[i + g[j].len] + 1) 枚举所有在i顶点下的边,g[j].len 是在i顶点下的单词的长度

当前状态转移=以前状态+1,所以也可用BFS做。

所犯错误: 范了前所未有的低级错误,把应该定义成整型的数组定义成字符 ,直到自己下了测试数据才知道;

贡献了4次OLE , 3次TLE , 1次WA,1次CE,1次AC ,学会了用在可能出错的地方添加代码用TLE检测

Time Range :20:00 30th Nov ~ 9:00 2nd  Dec



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值