N皇后問題的python實現


數據結構中常見的問題,最近復習到了,用python做一遍。

# 檢測(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)


n = 4       # 這里是n 就是n皇后
queue = [None for i in range(n)]        # 存儲皇后位置的一維數組,數組下標表示皇后所在的列,下標對應的值為皇后所在的行。
put_position(n, queue, 0)

n = 4時:

n = 8時:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM