问题描述
我正在尝试使用回溯算法在 leetcode 中解决置换问题,在打印时我得到了所有的可能性,但是当我尝试将这些值存储在全局变量中时,我不允许这样做
go.mod
当我为 outPut 存储全局变量中的值时,我得到了这样的
Ex:
AnswerIwant:[[1,2,3],[1,3,2],[2,1,1],[3,1]]
when i print those value while recursion it is print
Example:
[1,3]
[1,2]
[2,1]
[2,3]
[3,2]
[3,1]
[1,3]
[[1,3]]
[[1,2]]
[1,2]
[[1,2]]
[[1,3]]
[[1],[1]]
[2,1]
[[2,1]]
[[2,3]]
[2,3]
[[2,3]]
[[2,1]]
[[2],[2],[2]]
[3,2]
[[3,2]]
[[3,1]]
[3,1]
[[3,1]]
[[3,2]]
[[3],[3],[3]]
[[],[],[]]
用符号词解释我面临的问题 谢谢
解决方法
您必须在添加到 answerIwant 列表时附加列表的副本。因此,您应该将 answerIwant.append(bucket)
替换为 answerIwant.append(bucket.copy())
。
有关详细信息,请参阅 this。所以你的代码可能是这样的,
nums = [1,2,3]
val=nums
answerIwant = []
numberOfValues=len(val)-1
answer=[]
def permutation(nums,bucket,index,sub):
global numberOfValues
for i in range(len(nums)):
val=nums.pop(0)
bucket.append(val)
if len(bucket)-1==numberOfValues:
# print(bucket)
answerIwant.append(bucket.copy())
permutation(nums,sub)
nev = bucket
nev=bucket.pop()
nums.append(nev)
#[[1,3],[1,3,2],[2,1,1],[3,1]]
sub=[]
bucket = []
permutation(nums,sub)
print(answerIwant)