八皇后II
Posted wilderness
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了八皇后II相关的知识,希望对你有一定的参考价值。
用一个数组state记录已经选择的每一行皇后所在的位置,DFS
1 count = 0 2 N = 8 3 state = [0]*N 4 5 def dfs(row): 6 global count 7 for col in range(N): 8 for i in range(row): 9 if col == state[i] or abs(i-row) == abs(col-state[i]): 10 break 11 else: 12 if row == N-1: 13 count += 1 14 else: 15 state[row] = col 16 dfs(row+1) 17 18 dfs(0) 19 print(count)
在整数shu,pie,na中用每个bit位记录已经被占用的 竖,撇,捺
1 count, N, pie, na, shu = 0, 8, 0, 0, 0 2 3 def dfs(row): 4 global count, pie, na, shu 5 for col in range(N): 6 j, i = row+col, N-1-row+col 7 #验证此位置是否可行 8 if not ((shu >> col) | (pie >> j) | (na >> i)) & 1: 9 if row == N-1: 10 count += 1 11 else: 12 #记录此位置 13 shu ^= (1 << col); pie ^= (1 << j); na ^= (1 << i) 14 dfs(row+1) 15 #清除此位置信息 16 shu ^= (1 << col); pie ^= (1 << j); na ^= (1 << i) 17 18 if __name__ == ‘__main__‘: 19 dfs(0) 20 print(count)
以上是关于八皇后II的主要内容,如果未能解决你的问题,请参考以下文章