我不确定为单词搜索益智游戏创建矩阵的规则。我能够创建一个初始值为0的矩阵。
是否正确我会随机选择一个起点(坐标),然后一个单词的随机方向(水平,垂直和&,对角线)然后管理它是否会与另一个单词重叠矩阵?如果确实如此,那么检查字符是否相同(虽然只有一点机会)然后如果没有我会在那里分配它。问题是我减少了单词重叠的可能性。
我还读过,我需要先检查具有相同字符的单词。但如果是这样的话,那么我将要放在矩阵中的单词似乎总是重叠。
答案 0 :(得分:0)
我宁愿看看已经存在的单词,然后从适合那里的单词集中随机选择一个单词。 当然你可能不会像这样填充整个矩阵。如果你把一个单词放在某个地方阻止所有其他单词(没有其他单词适合),你可能需要回溯,但这会消耗运行时间。
如果你真的想要填充整个矩阵,我会迭代所有可能的起始位置,查看那里有多少单词,然后用最少的候选者来计算起始位置的可能性。这将导致您的程序识别并离开"死胡同"早,这大大改善了运行时间。这是一种来自固定参数算法的强大技术,我喜欢称之为分支矢量最小化。
答案 1 :(得分:0)
从最长的单词开始。 首先,你必须找到这个词可能适合的所有点和方向。例如,单词'WORD'可能适合,当第一个pos有NULL或W时,第二个pos NULL或O,第三个NULL或R和第四个NULL或D.
然后你应该将它分组到没有NULLS的位置,一个NULL,两个NULL等等。
然后从具有最小数量的NULLS的组中随机选择位置。如果没有可能的位置,请跳过这个词。
此尝试将允许您添加更多单词并防止出现随机搜索无法找到正确位置的情况(当只有少数单词时)。