2016年5月28日 星期六

Uva 167 The Sultan's Successors

#八皇后 #The Sultan's Successors #Uva167
題目:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=103


算是八皇后問題之一,只是一直錯在遞迴的地方...昨天一直debug不出來...

寫這題的時候,順便回去複習了一下八皇后

======================八皇后解法======================

先橫向逐行放置皇后
將位置存至M[ i ] = j;
表示第 i 行的 的皇后在第 j 列






這樣皇后一定不會縱向攻擊,我們再來一一判斷是否會橫向攻擊或是對角線攻擊


位置(x,y) 的 y-x 表示了主對角線


位置(x,y) 的 x+y 表示了副對角線
如果x y 會混淆的話  也可以把上圖的x 、y 替代成 i 、j 


假如說我們已經放到第三行的皇后了,讓我們只要在判斷她和前面兩行的皇后有沒有衝突,code如下

//C表示,目前排到的行數

如果都沒有衝突的話,就接下去擺下一行的皇后。
直到皇后擺完8個,就可以將M[ ]的資料copy到Answer[ ][ ]裡面,等下比較好計算


等到92種排法都找到後,就可以讀入測資,並計算最大值了



完整程式碼:


沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。