我在回溯时遇到了一些困难。
如何定义用于回溯问题的全局列表?我看到了几个答案,他们都建议在变量名前面使用'global'关键字,在函数内部用作全局。但是,它在这里给了我一个错误。
有没有什么好的通用方法可以用来获取结果,而不是全局变量?
下面的代码试图解决回溯问题,其中给出了一个数字列表,我们必须找到添加到目标的唯一数字对(不允许排列)。
For example, given candidate set [2, 3, 6, 7] and target 7,
A solution set is:
[
[7],
[2, 2, 3]
]
///////////////////////////////CODE/////////////////////////////
seen = []
res = []
def func(candidates, k, anc_choice): #k == target
#global res -- gives me an error -- global name 'res' is not defined
if sum(anc_choice) == k:
temp = set(anc_choice)
flag = 0
for s in seen:
if s == temp:
flag = 1
if flag == 0:
seen.append(temp)
print(anc_choice) #this gives me the correct answer
res.append(anc_choice) #this doesn't give me the correct answer?
print(res)
else:
for c in candidates:
if c <= k:
anc_choice.append(c) #choose and append
if sum(anc_choice) <= k:
func(candidates, k, anc_choice) #explore
anc_choice.pop() #unchoose
func(candidates, k, [])
有人可以给我答案/建议吗?