Phone Numbers

来源:互联网 发布:淘宝客建站app 编辑:程序博客网 时间:2024/04/30 14:54

题目来源

完整思路流程:

题意是给定以长度不超过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