Skip to content

Commit 85030b0

Browse files
authored
Merge pull request BeeBombshell#118 from glacias07/new_branch
Added backtracking solutions for knights_tour and n_queens
2 parents ab1f009 + b9248db commit 85030b0

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

Backtracking/Knights_tour.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
def knights_tour(n, row, col):
2+
visited = [[False]*n for i in range(n)]
3+
res = []
4+
def path_gen(path,r,c,visited,step):
5+
if r < 0 or c < 0 or r >= n or c >= n or visited[r][c]:
6+
return
7+
if step == n*n:
8+
res.append(path + f'({r},{c})')
9+
return
10+
visited[r][c] = True
11+
path_gen(path + f'({r},{c}) ', r - 2, c + 1, visited, step+1)
12+
path_gen(path + f'({r},{c}) ', r - 2, c - 1, visited, step+1)
13+
path_gen(path + f'({r},{c}) ', r - 1, c + 2, visited, step+1)
14+
path_gen(path + f'({r},{c}) ', r - 1, c - 2, visited, step+1)
15+
path_gen(path + f'({r},{c}) ', r + 2, c + 1, visited, step+1)
16+
path_gen(path + f'({r},{c}) ', r + 2, c - 1, visited, step+1)
17+
path_gen(path + f'({r},{c}) ', r + 1, c + 2, visited, step+1)
18+
path_gen(path + f'({r},{c}) ', r + 1, c - 2, visited, step+1)
19+
visited[r][c] = False
20+
path_gen('', row, col,visited,1)
21+
return res
22+
23+
print(knights_tour(5, 2, 2))

Backtracking/N_queens.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
def n_queens(n):
2+
res = []
3+
board = [['.']*n for i in range(n)]
4+
cols = set()
5+
pdiags = set()
6+
ndiags = set()
7+
def gen(r):
8+
if r == n:
9+
res.append([''.join(row) for row in board])
10+
return
11+
for c in range(n):
12+
if c in cols or r+c in pdiags or r-c in ndiags:
13+
continue
14+
board[r][c] = 'Q'
15+
cols.add(c)
16+
pdiags.add(r+c)
17+
ndiags.add(r-c)
18+
gen(r + 1)
19+
board[r][c] = '.'
20+
cols.remove(c)
21+
pdiags.remove(r+c)
22+
ndiags.remove(r-c)
23+
gen(0)
24+
return res
25+
26+
print(n_queens(8))

0 commit comments

Comments
 (0)