我有 4x4 字母表,我想在那里找到所有可能的路径。它们是词语的候选者。我对变量“used”有问题,它是一个列表,其中包含路径已经存在的所有位置,因此它不会再去那里。每条路径都应该有一个使用列表。但它无法正常工作。例如,我有一个测试打印,打印当前单词和使用的列表。有时该单词只有一个字母,但路径已遍历所有 16 个单元格/索引。
大小为 8 的 for 循环适用于所有可能的方向。主函数执行追踪函数 16 次 - 每个可能的起点执行一次。 Move函数返回移动到特定方向后的索引。 is_allowed 测试是否允许移动到某个分区。 示例输入:oakaoastsniuttot。 (4x4 表格,其中前 4 个字母是第一行等) 示例输出:可以在某个单词的字典中找到的所有真实单词 就我而言,它可能会输出一两个单词,但不是几乎全部,因为它认为某些单元格已被使用,即使它们没有。
def chase(current_place, used, word):
used.append(current_place) #used === list of indices that have been used
word += letter_list[current_place]
if len(word)>=11:
return 0
for i in range(3,9):
if len(word) == i and word in right_list[i-3]: #right_list === list of all words
print word
break
for i in range(8):
if is_allowed(current_place, i) and (move(current_place, i) not in used):
chase(move(current_place, i), used, word)
最佳答案
问题是只有一个used
列表被传递。在 chase()
中,您有两种解决此问题的选项:
- 制作
已使用
的副本并使用该副本。 - 在从函数返回之前,撤消在开始时完成的
append()
。
关于Python递归函数似乎丢失了一些变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14528747/