Python的n皇后
Python是一种高级编程语言,可用于解决各种计算问题,包括数学问题。其中一个经典的数学问题是n皇后问题。这个问题涉及到如何在n×n的棋盘上放置n个皇后,使得它们不互相攻击,即不能在同一行、同一列或同一对角线上出现两个皇后。以下是一个Python实现的n皇后问题的例子。
def is_attacked(i, j, board): for k in range(len(board)): if board[i][k] == 1 or board[k][j] == 1: return True for k in range(len(board)): for l in range(len(board)): if (k + l) == (i + j) or (k - l) == (i - j): if board[k][l] == 1: return True return False def n_queens(n, board=[], row=0): if row == n: return board for i in range(n): if not is_attacked(row, i, board): board.append([0] * n) board[row][i] = 1 if n_queens(n, board, row+1): return board board.pop() return False n = int(input("请输入想要放置的皇后数量:")) board = n_queens(n) if board == False: print("无法放置皇后。") else: for row in board: print(row)
首先定义了一个函数is_attacked
,它检查给定的坐标是否被攻击,如果被攻击则返回True,否则返回False。接下来定义了主函数n_queens
,它开始时创建一个空棋盘,并尝试放置皇后。如果可以放置,就递归地调用自己,直到完成。最后调用n_queens
函数,并打印出棋盘。