Add files via upload
This commit is contained in:
+36
@@ -0,0 +1,36 @@
|
||||
def is_safe(board, row, col):
|
||||
for i in range(row):
|
||||
if board[i] == col or abs(board[i] - col) == abs(i - row):
|
||||
return False
|
||||
return True
|
||||
|
||||
def solve_n_queens_first(board, row, n):
|
||||
if row == n:
|
||||
return board[:] # Return the first solution found
|
||||
|
||||
for col in range(n):
|
||||
if is_safe(board, row, col):
|
||||
board[row] = col
|
||||
result = solve_n_queens_first(board, row + 1, n)
|
||||
if result: # If solution found, return immediately
|
||||
return result
|
||||
board[row] = -1 # Backtrack
|
||||
return None # No solution in this path
|
||||
|
||||
def print_solution(board, n):
|
||||
for row in range(n):
|
||||
line = ['Q' if i == board[row] else '.' for i in range(n)]
|
||||
print(" ".join(line))
|
||||
print()
|
||||
|
||||
def n_queens_one_solution(n):
|
||||
board = [-1] * n
|
||||
solution = solve_n_queens_first(board, 0, n)
|
||||
if solution:
|
||||
print("One valid n-Queens solution:")
|
||||
print_solution(solution, n)
|
||||
else:
|
||||
print("No solution exists.")
|
||||
|
||||
# Example: 8-Queens
|
||||
n_queens_one_solution(8)
|
||||
Reference in New Issue
Block a user