Question
The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.
Given an integer n, return all distinct solutions to the n-queens puzzle.
Each solution contains a distinct board configuration of the n-queens’ placement, where ‘Q’ and ‘.’ both indicate a queen and an empty space respectively.
For example,
There exist two distinct solutions to the 4-queens puzzle:
[
[“.Q..”, // Solution 1
“…Q”,
“Q…”,
“..Q.”],
[“..Q.”, // Solution 2
“Q…”,
“…Q”,
“.Q..”]
]
Show Tags
Show Similar Problems
Solution
class Solution(object):
def solveNQueens(self, n):
"""
:type n: int
:rtype: List[List[str]]
"""
res = []
columnInRow = [0]*n
self.helper( n, 0, columnInRow , res)
return res
def helper(self, n, row, columnInRow, res):
if row==n:
item = []
for indr in range(n):
row = ""
for indc in range(n):
if indc==columnInRow[indr]:
row += 'Q'
else:
row += '.'
item.append(row)
res.append(item)
return
for ind in range(n):
columnInRow[row] = ind
if self.check(row,columnInRow):
self.helper(n, row+1, columnInRow, res)
def check(self, row, columnInRow):
for ind in range(row):
if columnInRow[ind]==columnInRow[row] or abs(columnInRow[ind]-columnInRow[row])==(row-ind):
return False
return True