这是我的代码,并想知道为什么它变成无限循环?感谢。
class Solution(object):
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
else:
self.NQueens(result)
result.pop(-1)
return
if __name__ == "__main__":
s = Solution()
s.NQueens([])
提前谢谢,
林
答案 0 :(得分:1)
您只是找到所有解决方案(您的验证代码被窃听,因此它们非常多!)。 您可能还希望在找到第一个结果时退出搜索...
if row == 7:
print "result ok", result
exit();
修复有效功能:
for i in range(0, len(result)-1):
if result[i] == Y or abs(i - X) == abs(result[i] - Y):
return False
return True