I am trying to write a code to solve N-Queen problem (its not optimized). The aim is to identify all possible scenarios, but got stuck in backtracking.
I kind of see what is the problem but not able to fix it. When I am trying to backtrack, it's not resetting the previous row.
can someone identify what am I doing wrong.
from array import *
N = 4
def prnt (board):
    for x in range(N):
        for y in range(N):
            print (board[x][y], end = " ")
        print()
def checkdiag(board, row, col):
    T = [row,col]
    for x in range(N):
        for y in range(N):
            # print("diag values", T, x, y)
            if (abs(T[0] - x) == abs(T[1] - y)):
                if board[x][y] == 1:
                    # print("diag values board", T, x, y)
                    return 1
    return 0
def checkrow(board, row, col):
    T = [row,col]
    for x in range(N):
        for y in range(N):
            # print("row values", T, x, y)
            if (T[0] == x):
                if board[x][y] == 1:
                    # print("row values board", T, x, y)
                    return 1
    return 0
def checkcol(board, row, col):
    T = [row,col]
    for x in range(N):
        for y in range(N):
            # print("col values", T, x, y)
            if (T[1] == y):
                if board[x][y] == 1:
                    # print("col values board", T, x, y)
                    return 1
    return 0
def isSafe(board, row, col):
    if (checkdiag(board, row, col) == 0 and checkcol(board, row, col) == 0 and checkrow(board, row, col) == 0):
       # print ("row, col, diag", checkrow(board, row, col), checkcol(board, row, col), checkdiag(board, row, col))
        return 0
    else:
        return 1
    
def reset (board, row, N):
    for x in range(N):
        board[row][x] = 0
def backtrack(board, row, N):
    # print("backtrack")
    # prnt(board)
    # print("row in backtrack", row)
    if row >= N:
        return 'success'
    for col in range(N):
        # print ("backtrack before", row, col)
        safe = isSafe(board, row, col)
        # print (" Safe value", safe)
        if safe == 0:
            print ("backtrack IS safe", row, col)
            prnt(board)
            board [row][col] = 1
            backtrack(board, row+1, N)
        else:
            print ("backtrack NOT safe", row, col)
            board [row][col] = 0
            prnt(board)
    #reset (board, row - 1, N)
            # row = row -1
                
if __name__ == '__main__':
    board = [ [0] * N for _ in range(N)]
    prnt(board)
    if (backtrack(board, 0, N) == 'success'):
        prnt(board)
 
     
    