forked from yingl/LintCodeInPython
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathn_queens_ii.py
More file actions
30 lines (27 loc) · 926 Bytes
/
n_queens_ii.py
File metadata and controls
30 lines (27 loc) · 926 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# -*- coding: utf-8 -*-
class Solution:
"""
Calculate the total number of distinct N-Queen solutions.
@param n: The number of queens.
@return: The total number of distinct solutions.
"""
def totalNQueens(self, n):
# write your code here
self.ret = 0
self.limit = n
self.solveNQueens(0, [])
return self.ret
def solveNQueens(self, row, queens):
if row == self.limit:
self.ret += 1
else:
for col in xrange(self.limit):
if self.check(queens, row, col):
queens.append([row, col])
self.solveNQueens(row + 1, queens) # 搜索下一行
queens.pop()
def check(self, queens, row, col):
for queen in queens:
if (col == queen[1]) or (abs(row - queen[0]) == abs(col - queen[1])):
return False
return True