切換
舊版
前往
大廳
主題

ZeroJudge - c104: 00167 - The Sultan's Successors 解題心得

Not In My Back Yard | 2020-07-27 00:00:09 | 巴幣 2 | 人氣 169

題目連結:


題目大意:
第一列給定一正整數 k (k ≦ 20),代表有 k 筆測試資料。

每筆佔八列輸入,每列給定八個整數(值為 0 ~ 99),代表一個標準 8 × 8 西洋棋棋盤,每格上有著數字。

若現在要將八個皇后放置於棋盤上,使得彼此不互相攻擊(皇后的攻擊範圍為米字型,即對角線 + 直線的任意格數)。試問八個皇后所在的格子之數字總和最大為何?輸出長度為五個字元並靠右對齊,不足五個字元補上空白字元,參見範例輸出。



範例輸入:
2
1  2  3  4  5  6  7  8
9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32
33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48
48 50 51 52 53 54 55 56
57 58 59 60 61 62 63 64
99 92 53 74 69 76 87 98
9 12 11 12 19 14 15 16
17 14 19 20 29 22 23 24
25 26 57 28 29 30 31 32
33 34 36 76 39 58 39 40
1 42 43 44 85 46 47 48
58 60 71 82 53 34 55 56
57 58 39 90 61 32 23 44


範例輸出:
  260
  429


解題思維:
八皇后問題的變型,可以參見這題的做法,然後將輸出盤面結果改為統計皇后所在格子之數字總和。然後看哪個合理的(意指八皇后不會互相攻擊)盤面得出的數字最大,即是所求。

不過除了每次進來一個盤面遞迴一次八皇后的解以外,也可以只遞迴一次八皇后的所有解,然後將所有解的盤面儲存下來(不多,92 個而已)。然後對於每次輸入的盤面,按照這些盤面去看哪個盤面得出的數字最大。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作