Python的n皇后
导读:Python是一种高级编程语言,可用于解决各种计算问题,包括数学问题。其中一个经典的数学问题是n皇后问题。这个问题涉及到如何在n×n的棋盘上放置n个皇后,使得它们不互相攻击,即不能在同一行、同一列或同一对角线上出现两个皇后。以下是一个Pyt...
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 Truefor 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 Truereturn Falsedef n_queens(n, board=[], row=0):if row == n:return boardfor i in range(n):if not is_attacked(row, i, board):board.append([0] * n)board[row][i] = 1if n_queens(n, board, row+1):return boardboard.pop()return Falsen = 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
函数,并打印出棋盘。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Python的n皇后
本文地址: https://pptw.com/jishu/514158.html