#经典回溯,极简python解答
class Solution:
def Nqueen(self , n ):
#col: 存储已有的列信息,如[1,4]含义为第1行第1列和第2行第4列已经存放了
#ld: 存储已有的左下对角线信息,特点是行(i) - 列(j)为固定值
#ru: 存储已有的右上对角线信息,特点是行(i) + 列(j)为固定值
def backtrack(col, ld, ru):
if len(col) == n:
self.res += 1
return
i = len(col)
for j in range(n):
if j not in col and i + j not in ru and i - j not in ld:
backtrack(col+[j], ld + [i - j], ru + [i + j])
self.res = 0
backtrack([], [], [])
return self.res 
京公网安备 11010502036488号