Concept
先說結論:
1.Backtracking
2.Permutation
1.Backtracking
因為看到Constraints: 1 <= m, n <= 8
在比賽當下第一個想到的是用backtracking
計算次數: m*m*n
先把所有的可能算出存到一個table(避免在backtracking時重複計算)
(這畫圖技術…)
那這樣就可以把此問題轉為一個類似N-queens的問題
找出所有路徑並把所有答案記錄下來,算出最大值
2.Permutation
透過Backtracking觀察
我們可以發現所有路徑就是 0 ~ n-1
的permutation
一樣透過存值到table
將這些路徑全部算出即可得到答案
hints: C++ <alogrithm>
中有個next_permutation
可以用
Code
Backtracking
Runtime: 52 ms,
|
|
Permutation without pre-calculate table
Runtime: 384 ms
|
|
Permutation with pre-calculate table
Runtime: 52ms
|
|