Python Program for N Queen Problem | Backtracking-3

31 May, 2022
The N Queen is the problem of placing N chess queens on an N×N chessboard so that no two queens attack each other. For example, the following is a solution for 4 Queen problem.
The expected output is a binary matrix that has 1s for the blocks where queens are placed. For example, the following is the output matrix for above 4 queen solution.
              { 0,  1,  0,  0}
              { 0,  0,  0,  1}
              { 1,  0,  0,  0}
              { 0,  0,  1,  0}
Python3
# Python program to solve N Queen# Problem using backtracking global NN = 4 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 queensdef 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 column 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]             ]     if solveNQUtil(board, 0) == False:        print ("Solution does not exist")        return False     printSolution(board)    return True # driver program to test above functionsolveNQ() # This code is contributed by Divyanshu Mehta
0 0 1 0
1 0 0 0
0 0 0 1
0 1 0 0
 
Time Complexity: O(N2)
Auxiliary Space: O(N)
Please refer complete article on N Queen Problem | Backtracking-3 for more details! 
anikakapoor
amartyaghoshgfg
chandramauliguptach
Python DSA-exercises
Python Programs
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Python | Convert a list to dictionary
Python | Convert string dictionary to dictionary
Python Program for Fibonacci numbers
Python program to check whether a number is Prime or not
Python program to add two numbers
Python Program for Binary Search (Recursive and Iterative)
Python Program for factorial of a number
Python program to find second largest number in a list
Iterate over characters of a string in Python
Python | Convert set into a list