【发布时间】:2011-11-29 02:54:06
【问题描述】:
给你一个包含 3 个字母单词的字典,你必须找到一个 3x3 的矩阵,使得每一行、每一列和对角线都在字典中形成一个单词。字典中的单词已排序,您可以假设从字典中检索单词的时间为 O(1)。
这是作为 Facebook 面试问题提出的。
【问题讨论】:
-
没有对角线,听起来类似于crossword问题,即[NP-Complete](en.wikipedia.org/wiki/NP-complete)
-
一个词可以多次使用吗?
-
一个词只能在我不知道如何使用时使用,但我认为这可以使用动态编程和/或回溯来解决。
-
@amit:对于固定矩阵大小和固定字母表(如本例),所有可能解决方案的数量是恒定的,因此 O(1) 算法可以计算所有可能的矩阵,然后测试每一个针对字典 O(1) 时间:)
-
它可能可以通过检查所有可能性通过回溯来解决,但运行时间将是指数的。如果这个问题确实像没有对角线的姐妹一样是 NP-Hard,那它可能是你最好的选择。
标签: string algorithm dictionary