數據結構中常見的問題,最近復習到了,用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時: