0% found this document useful (0 votes)
38 views

Backtrack Py

This Python program uses backtracking to solve the N queens problem. It places queens on a 8x8 chessboard such that no two queens attack each other. It defines functions to check if a queen can be safely placed at a position, recursively try all placements, and print the final solution board. The main function calls the backtracking solver and prints the result.

Uploaded by

Harshit
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
38 views

Backtrack Py

This Python program uses backtracking to solve the N queens problem. It places queens on a 8x8 chessboard such that no two queens attack each other. It defines functions to check if a queen can be safely placed at a position, recursively try all placements, and print the final solution board. The main function calls the backtracking solver and prints the result.

Uploaded by

Harshit
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

# Python3 program to solve N Queen

# Problem using backtracking


global N
N = 8

def printSolution(board):
for i in range(N):
for j in range(N):
print (board[i][j], end = " ")
print()

# A utility function to check if a queen can


# be placed on board[row][col]. Note that this
# function is called when "col" queens are
# already placed in columns from 0 to col -1.
# So we need to check only left side for
# attacking queens
def isSafe(board, row, col):

# Check this row on left side


for i in range(col):
if board[row][i] == 1:
return False

# Check upper diagonal on left side


for i, j in zip(range(row, -1, -1),
range(col, -1, -1)):
if board[i][j] == 1:
return False

# Check lower diagonal on left side


for i, j in zip(range(row, N, 1),
range(col, -1, -1)):
if board[i][j] == 1:
return False

return True

def solveNQUtil(board, col):

# base case: If all queens are placed


# then return true
if col >= N:
return True

# Consider this column and try placing


# this queen in all rows one by one
for i in range(N):

if isSafe(board, i, col):

# Place this queen in board[i][col]


board[i][col] = 1

# recur to place rest of the queens


if solveNQUtil(board, col + 1) == True:
return True

# If placing queen in board[i][col


# doesn't lead to a solution, then
# queen from board[i][col]
board[i][col] = 0

# if the queen can not be placed in any row in


# this colum col then return false
return False

# This function solves the N Queen problem using


# Backtracking. It mainly uses solveNQUtil() to
# solve the problem. It returns false if queens
# cannot be placed, otherwise return true and
# placement of queens in the form of 1s.
# note that there may be more than one
# solutions, this function prints one of the
# feasible solutions.
def solveNQ():
board = [ [0, 0, 0, 0, 0, 0,, 0, 0]
[0, 0, 0, 0, 0, 0,, 0, 0]
[0, 0, 0, 0, 0, 0,, 0, 0]
[0, 0, 0, 0, 0, 0,, 0, 0]
[0, 0, 0, 0, 0, 0,, 0, 0]
[0, 0, 0, 0, 0, 0,, 0, 0]
[0, 0, 0, 0, 0, 0,, 0, 0]
[0, 0, 0, 0, 0, 0,, 0, 0]
]

if solveNQUtil(board, 0) == False:
print ("Solution does not exist")
return False

printSolution(board)
return True

# Driver Code
solveNQ()

# This code is contributed by Divyanshu Mehta

You might also like