给出一个包含数百万字的字典,给出一个算法来找到最大可能的字母矩形,这样每行形成一个单词(从左到右阅读),每一列形成一个单词(从上到下阅读)。
我在stackoverflow上找到了一个非常好的解决方案here。基本上,在构造Trie之后,我使用回溯将所有可能的后缀放入矩阵中,直到找到有效的后缀。但是,我仍然坚持如何编写回溯部分。
考虑我在我的矩阵中加了'a','a'有3个孩子'b','c'和'd'。
a * ? ?
* ? ? ?
? ? ? ?
? ? ? ?
所以我需要将'b'放入矩阵并检查'b'的孩子。如果它不起作用,我需要删除一个'b'并将'c'放入矩阵,依此类推。所以它应该是这样的:
a * ? ? a b * ? a b * ?
* ? ? ? -> b * ? ? (if anything doesn't work) -> c * ? ?
? ? ? ? * ? ? ? * ? ? ?
? ? ? ? ? ? ? ? ? ? ? ?
我该如何实现? 谢谢。
答案 0 :(得分:0)
好吧,我仍然无法找到解决办法,但我还有另一个血腥残忍的解决方案。它仍然是一个回溯,它仍然需要特里。基本上,我将所有需要形成列的字符串放入Trie中。在行集中添加每个字符串,检查列中形成的每个前缀是否包含在Trie中,否则,继续,否则,递归添加行字符串,直到找到矩阵。请查看我的blog了解详情,如果您有任何疑问,请与我们联系。