Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 74a8aab

Browse files
Merge pull request vJechsmayr#479 from pikachu28/master
Create 0051_N-Queen_1.py
2 parents 42e5af2 + b60c2dc commit 74a8aab

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

‎LeetCode/0051_N-Queen_1.py‎

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
Created on Wed Oct 7 20:51:57 2020
4+
5+
@author: anjalisingh
6+
"""
7+
8+
class Solution(object):
9+
def solveNQueens(self, n):
10+
# i is column index
11+
# left: left diagonal: \ level-i
12+
# right: right diagonal: / level+i
13+
self.col = [0]*n # not occupied column
14+
self.left = [0]*(2*n-1) # number of left diagonal
15+
self.right = [0]*(2*n-1)
16+
board = [['.' for x in range(n)] for y in range(n)]
17+
self.resultBoard = []
18+
self.backTrack(n, 0, board)
19+
return self.resultBoard
20+
21+
def backTrack(self, n, level, board):
22+
if level == n: # finish
23+
res = []
24+
for i in range(n):
25+
res.append(''.join(board[i]))
26+
self.resultBoard.append(res)
27+
return
28+
for i in range(n): # iterate every column
29+
# if col, left, right are all not accupied, put a queue here
30+
if not self.col[i] and not self.left[level-i] and not self.right[level+i]:
31+
board[level][i] = 'Q'
32+
self.col[i] = 1
33+
self.left[level-i] = 1
34+
self.right[level+i] = 1 # choose
35+
self.backTrack(n, level+1, board) # explore
36+
board[level][i] = '.' # un choose
37+
self.col[i] = 0
38+
self.left[level-i] = 0
39+
self.right[level+i] = 0
40+
41+
# Queen = Solution()
42+
# print(Queen.solveNQueens(4))

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /