1. 程式人生 > 其它 >演算法實驗報告3——N皇后——2020.12.17

演算法實驗報告3——N皇后——2020.12.17

技術標籤:python演算法-每日一練演算法python佇列資料結構字串

演算法實驗報告3——N皇后

一丶N皇后問題

N皇后基礎題(輸入N,輸出所有結果):
在一個n*n的國際象棋棋盤上放置n個皇后,使得它們中任意2個之間都不互相“攻擊”,即任意2個皇后不可在同行、同列、同斜線上。
輸入N,⑴求N皇后問題的一種放法; ⑵求N皇后問題的所有放法

二丶試題程式碼

# coding=gbk
__author__ = 'Blockchain_Key'
__time__ = '2020.12.17'

# 檢測(x,y)這個位置是否合法(不會被其他皇后攻擊到)
def is_attack(queue, x, y): for i in range(x): if queue[i] == y or abs(x - i) == abs(queue[i] - y): return True return False # 按列來擺放皇后 def put_position(n, queue, col): for i in range(n): if not is_attack(queue, col, i): queue[col] = i if
col == n - 1: # 此時最後一個皇后擺放好了,列印結果。 print(queue) else: put_position(n, queue, col + 1) if __name__ == "__main__": n = int(input()) # n個皇后 queue = [None for i in range(n)] # 儲存皇后位置的一維陣列,陣列下標表示皇后所在的列,下標對應的值為皇后所在的行。 put_position(
n, queue, 0)

三丶執行結果

在這裡插入圖片描述

——虎鼓瑟兮鸞回車,仙之人兮列如麻——