完整思路流程:
题意是给定以长度不超过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