#41964: 二進制優化 46ms


qerpzzea@gmail.com (賽希爾 cecill(陳宥穎))

學校 : 高雄市立中正高級中學
編號 : 169400
來源 : [163.32.60.236]
最後登入時間 :
2024-11-06 12:35:37
a160. 祖靈想要下棋!!!!!!!! -- 祖靈的棋魂!!!! | From: [114.40.41.236] | 發表日期 : 2024-09-14 18:08

1.由於是要在n*n的棋盤放n個皇后,所以可知每個row必有一個皇后,
那我們只需知道每個row的皇后可放在哪個位置,然後遞迴到第n+1之
後輸出就行了

2.對角線判斷
可以用x+y 與x-y+n來表示(+n是為了避免負數)

3.二進制優化
0代表有皇后,1代表沒皇后,可以用三個陣列來判斷是否能放皇后

初始化為每一位都是1
ty代表該column是否已被皇后佔據
ta tb代表兩個對角線是否被皇后佔據
如果都是1那就能放

4.要快速判斷放在哪個column有機會可以用x&-x來得出,假如x能放那放的位置就會是log2(x)+1

 
ZeroJudge Forum