Matrix 实现最大可能的字母矩形

Matrix 实现最大可能的字母矩形,matrix,backtracking,trie,Matrix,Backtracking,Trie,给定一个有数百万个单词的字典,给出一个算法来寻找可能的最大字母矩形,这样每一行形成一个从左到右阅读的单词,每一列形成一个从上到下阅读的单词 我在stackoverflow上找到了一个很好的解决方案。基本上,在构造Trie之后,我使用回溯将所有可能的后缀放入矩阵中,直到找到一个有效的后缀。然而,我被困在如何写回溯部分 假设我在矩阵中加入了“a”,而“a”有3个子元素“b”、“c”和“d” a * ? ? * ? ? ? ? ? ? ? ? ? ? ? 所以我需要把“b”放进矩阵,检查“b”的孩

给定一个有数百万个单词的字典,给出一个算法来寻找可能的最大字母矩形,这样每一行形成一个从左到右阅读的单词,每一列形成一个从上到下阅读的单词

我在stackoverflow上找到了一个很好的解决方案。基本上,在构造Trie之后,我使用回溯将所有可能的后缀放入矩阵中,直到找到一个有效的后缀。然而,我被困在如何写回溯部分

假设我在矩阵中加入了“a”,而“a”有3个子元素“b”、“c”和“d”

a * ? ?
* ? ? ? 
? ? ? ?
? ? ? ?
所以我需要把“b”放进矩阵,检查“b”的孩子们。如果它不起作用,我需要删除一个'b'并将'c'放入矩阵,依此类推。所以它应该是这样的:

a * ? ?           a b * ?                                     a b * ?
* ? ? ?     ->    b * ? ?     (if anything doesn't work) ->   c * ? ? 
? ? ? ?           * ? ? ?                                     * ? ? ?
? ? ? ?           ? ? ? ?                                     ? ? ? ?
我应该如何实现这一点?
谢谢。

嗯,我还是想不出那个解决方案,但我还有一个非常残酷的解决方案。这仍然是一个回溯,它仍然需要Trie。基本上,我将所有需要形成列的字符串放入Trie中。在行集中添加每个字符串,检查列形成的每个前缀是否包含在Trie中,如果不包含,则继续,否则,递归添加行字符串,直到找到矩阵。请查看我的详细信息,如果您有任何问题,请告诉我