最小的“拼字游戏板”,包含列表中的每个单词

时间:2012-04-11 14:17:53

标签: arrays algorithm letter

我正在寻找能够构建字母数组(2D)的算法,我可以从中提取给定列表的每个单词。 就像拼字游戏一样,单词可以相互交叉,并且可以是水平,垂直或对角线。当然有一些明显的解决方案,但这里的目标是使其尽可能小,这也意味着最大化交叉数量。

我想到了一种使用大量拼字游戏网格的机器学习方法,无论是由人类还是计算机制作,但我确信有一种更简洁的方法。

感谢您的帮助。

PS:这是一个艺术项目,不开玩笑。

1 个答案:

答案 0 :(得分:0)

那将是一些算法。我怀疑解决方案将涉及某种递归。

假设你有一个网格G0开头,所有方块都是空白的,而f(G0)是优化的完成网格。

然后我会尝试:

对于第一个单词的每个可能位置 - 设置G1 =该位置的网格,所有其他方块为空白 - 锻炼G1 继续下一个位置

要算出G1,你可以递归地调用f(G1)。

如果你有一个大网格和很多单词,这将需要永远运行,因为这是一个浪费的算法,但有一个典型的拼字游戏板我应该认为它在笔记本电脑上足够快。