最近在做回溯组合问题时–力扣链接,遇到了向一个空列表中append多个列表。
于是,我原来的代码是:
def main(n,k):
result = []
temp = []
def backtrack(n,k,startIndex):
if(len(temp)==k):
result.append(temp)
return
for i in range(startIndex,n+1):
temp.append(i)
backtrack(n,k,i+1)
temp.pop()
backtrack(n,k,1)
return result
if __name__ == "__main__":
n = int(input())
k = int(input())
result = main(n,k)
print(result)
这样的结果最后返回的列表全部为空:
仔细检查后才发现,向一个列表中append列表时,需要这样写append(list[:])
改正后的代码为:
def main(n,k):
result = []
temp = []
def backtrack(n,k,startIndex):
if(len(temp)==k):
result.append(temp[:])
return
for i in range(startIndex,n+1):
temp.append(i)
backtrack(n,k,i+1)
temp.pop()
backtrack(n,k,1)
return result
if __name__ == "__main__":
n = int(input())
k = int(input())
result = main(n,k)
print(result)