读过题以后就会发现是个背包问题。
与简单的背包不同的是,这个背包要建立字母和数字的对应关系。
基本思路是:把所有单词转化成数字的表示形式,然后用数字去填背包。复杂度是O(背包大小*单词个数*单词长度) = O(100*50000*50)。这个数很大了,会超时,所以需要一点优化。注意到单词是数字的字符串,可以把所有这些单词建立成一个Trie。这样做的话,在填充背包的时候,就不需要枚举每个单词了,只需要在Trie的相应位置查找一遍就可以了。填充的复杂度降到了O(背包大小*每个位置的查找次数) = O(100*100),前面建立Trie的复杂度是O(单词个数*单词长度) = O(50000*50)。所以最终的复杂度不会超过O(50000*50)。
乌龟爬的写了50分钟。不过还好1Y掉了,感觉还不错:)加油提高水平找回状态。。

