[問題] 有障礙物的八皇后問題

作者: woody3724 (woody)   2017-09-03 14:45:48
在棋盤上放置障礙物,使得同列、同欄、同對角線的皇后不會互相攻擊
例如:
在座標(3,f)和(4,h)放上障礙物
如此一來(3,e)和(3,h)不會打架,(3,h)和(5,h)也不會打架
Input是 1.放置了障礙物的棋盤,如圖

2.要擺到棋盤上的皇后的數量(大於等於1,當然也可能大於8)
若有解,則將其中一種解的棋盤印出
=====================================================================
一般的八皇后我是用backtracking解
我直接把我在LeetCode的解法貼上(因為是LeetCode,所以有用Solution包起來)
https://codeshare.io/29jRPM
我的解法中的第15行的迴圈是跑每列中可以擺放的欄
列放上旗子後,就進入下一列(第18行)
但可以放上障礙物的八皇后問題,變成在同一列上有可能放多個棋子
因此放上棋子後,似乎不能馬上進入下一列,所以我這解法似乎就失敗了
不知到各位有沒有甚麼想法可以指點
謝謝
作者: s89162504 (阿本)   2017-09-03 19:59:00
是有可能放超過八個的意思嗎?
作者: FRAXIS (喔喔)   2017-09-04 00:17:00
所以每一行多 try 幾個? 一行有 k 個障礙物就頂多 k+1 個

Links booklink

Contact Us: admin [ a t ] ucptt.com