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
函數,并打印出棋盤。
上一篇python的pca在