这是我的8皇后问题代码,为什么我的输出都是空列表([]
)?你知道吗
我已经检查过这个语句print "result ok", result
将得到非空结果。你知道吗
class Solution(object):
def __init__(self, finalResult):
self.finalResult = finalResult
def Valid(self,result):
currentX = len(result) - 1
currentY = result[-1]
if currentX == 0:
return True
for i in range(0, len(result) - 1):
if result[i] == currentY:
return False
elif abs(i - currentX) == abs(result[i] - currentY):
return False
return True
def NQueens(self, result):
if result == []:
row = 0
else:
row = len(result)
for col in range(0, 8):
result.append(col)
if self.Valid(result) == True:
# print "check valid ok", row, col, result
if row == 7:
# print "result ok", result
self.finalResult.append(result)
else:
self.NQueens(result)
result.pop(-1)
return
if __name__ == "__main__":
finalResult = []
s = Solution(finalResult)
s.NQueens([])
print len(s.finalResult)
for i in s.finalResult:
print i
输出
92
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
你应该替换
与
这将创建“结果”的副本。您当前的代码正在创建对同一结果的多个引用,这些引用都被清空结果.pop(-1)
您只有一个可以操作的列表
result
。当你附加时,你在列表中附加一个“引用”,然后你继续修改它。最后它是空的,所以你打印了92倍的空列表。您只需要在附加当前result
之前创建它的副本。你知道吗相关问题 更多 >
编程相关推荐