最近我一直在iPhone上玩一款名为《Scramble》的游戏。有些人可能知道这个游戏叫拼字游戏。从本质上讲,当游戏开始时,你会得到一个字母矩阵:
F X I E
A M L O
E W B X
A S T U
游戏的目标是找到尽可能多的单词,这些单词可以通过字母连接在一起。你可以从任何一个字母开始,它周围的所有字母都是公平的游戏,然后一旦你移动到下一个字母,这个字母周围的所有字母都是公平的游戏,除了以前使用过的字母。例如,在上面的网格中,我可以想出单词LOB
, TUX
, SEA
, FAME
,等等。单词必须至少有3个字符,并且不超过NxN字符,在这个游戏中是16个字符,但在某些实现中可能会有所不同。虽然这款游戏很有趣,很容易让人上瘾,但我显然不太擅长,我想通过制作一个程序来作弊,给我提供最好的单词(单词越长你得到的分数就越多)。
不幸的是,我不太擅长算法或它们的效率等等。我的第一次尝试使用字典比如这个 (~2.3MB),并进行线性搜索,试图匹配字典条目的组合。这需要非常很长时间来找到可能的单词,因为你每轮只有2分钟,这是不够的。
我很有兴趣看看是否有任何Stackoverflowers可以提出更有效的解决方案。我主要是在寻找使用三大p的解决方案:Python、PHP和Perl,尽管任何使用Java或c++的东西也很酷,因为速度是至关重要的。
当前的解决方案: