我不确定为单词搜索益智游戏创建矩阵的规则。我能够创建一个初始值为0的矩阵。
我会随机地为一个单词选择一个起点(坐标)和一个随机方向(水平方向、垂直方向和对角方向),然后管理它是否会与矩阵中的另一个单词重叠?,如果它检查字符是否相同(虽然只有很小的机会),那么如果没有,我将在那里指定它。问题是我好像减少了单词重叠的机会。
我还读到,我需要首先检查具有相同字符的单词。但如果是这样的话,我要写在矩阵中的单词似乎总是重叠的。
发布于 2016-11-23 10:13:54
我宁愿看看已经存在的单词,然后随机地从一组合适的单词中选择一个单词。当然,你可能不会像这样填充整个矩阵。如果您将一个单词放置在某个地方,它会阻塞所有其他单词(其他单词不适合),您可能不得不回溯,但这将占用运行时间。
如果你真的想要填充整个矩阵,我会迭代所有可能的起始位置,看看合适的单词有多少,然后用最少的候选数重新考虑起始位置的可能性。这将导致您的程序识别并提前离开“死胡同”,这将大大提高运行时间。这是固定参数算法的一种强大技术,我喜欢称之为分支向量最小化。
发布于 2016-11-23 10:20:14
从最长的单词开始。首先,你必须找到所有的点和方向,在这里这个词可能适合。例如,当在第一个pos上有NULL或W,在第二个pos上为NULL或O时,在第三个NULL或R上,在第四个NULL或D上,单词' word‘可能适合。
然后,您应该将它分组到没有NULL的位置,一个NULL,两个NULL等等。
然后从最小的无峰组中随机选择位置。如果没有可定位的位置,跳过单词。
这种尝试将允许您添加更多的单词并防止出现这样的情况,即随机搜索无法找到合适的位置(当其中只有少数几个)。
https://stackoverflow.com/questions/40704339
复制相似问题