def solve_n_queens(n):    def is_safe(board, row, col):        # Verificar la columna        for i in range(row):            if board[i][col] == 1:                return False               # Verificar la diagonal izquierda        i, j = row, col        while i >= 0 and j >= 0:            if board[i][j] == 1:                return False            i -= 1            j -= 1        # Verificar la diagonal derecha        i, j = row, col        while i >= 0 and j < n:            if board[i][j] == 1:                return False            i -= 1            j += 1        return True    def solve(board, row):        if row >= n:            solution = []            for r in board:                solution.append("".join(['R' if x == 1 else '.' for x in r]))            solutions.append(solution)            return               for col in range(n):            if is_safe(board, row, col):                board[row][col] = 1                solve(board, row + 1)                board[row][col] = 0       solutions = []    board = [[0] * n for _ in range(n)]    solve(board, 0)    return solutions # Ejemplo de uso: n = 8 solutions = solve_n_queens(n) for sol in solutions:    for row in sol:        print(row)    print() - Explain to me how the code progresses in simple words. -

icon
Related questions
Question

def solve_n_queens(n):

   def is_safe(board, row, col):

       # Verificar la columna

       for i in range(row):

           if board[i][col] == 1:

               return False

      

       # Verificar la diagonal izquierda

       i, j = row, col

       while i >= 0 and j >= 0:

           if board[i][j] == 1:

               return False

           i -= 1

           j -= 1

       # Verificar la diagonal derecha

       i, j = row, col

       while i >= 0 and j < n:

           if board[i][j] == 1:

               return False

           i -= 1

           j += 1

       return True

   def solve(board, row):

       if row >= n:

           solution = []

           for r in board:

               solution.append("".join(['R' if x == 1 else '.' for x in r]))

           solutions.append(solution)

           return

      

       for col in range(n):

           if is_safe(board, row, col):

               board[row][col] = 1

               solve(board, row + 1)

               board[row][col] = 0

  

   solutions = []

   board = [[0] * n for _ in range(n)]

   solve(board, 0)

   return solutions

# Ejemplo de uso:

n = 8

solutions = solve_n_queens(n)

for sol in solutions:

   for row in sol:

       print(row)

   print()

- Explain to me how the code progresses in simple words.

Expert Solution
steps

Step by step

Solved in 2 steps

Blurred answer