【发布时间】:2022-07-04 09:01:14
【问题描述】:
检查此示例代码以进行回溯,有两种方法可以在回溯之前将变量 i 附加到 curr,此处的一种(未注释)更新全局 ans 数组,而另一种方式则没有t(如下所示)。:
n = 4
k = 2
ans = []
def backtrack(first, curr):
if len(curr)==k:
ans.append(curr)
for i in range(first, n+1):
# curr.append(i)
backtrack(i+1, curr+[i])
# curr.pop()
curr = []
backtrack(1, curr)
print("result = ",ans)
在此处输出:result = [[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]
换一种方式:
n = 4
k = 2
ans = []
def backtrack(first, curr):
if len(curr)==k:
ans.append(curr)
for i in range(first, n+1):
curr.append(i)
backtrack(i+1, curr)
curr.pop()
curr = []
backtrack(1, curr)
print("result = ",ans)
在此处输出: result = [[], [], [], [], [], []]
我想了解,这里到底发生了什么变化,以及为什么全局输出数组 ans 表现不同
【问题讨论】:
-
请创建一个完整的minimal reproducible example,具有2个完整的功能和你得到的结果...
-
请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
-
刚刚做了,感谢@julien 的提示
标签: python oop recursion backtracking object-oriented-analysis