作者查詢 / CathyP

總覽項目: 發文 | 留言 | 暱稱
作者 CathyP 在 PTT [ Prob_Solve ] 看板的留言(推文), 共23則
限定看板:Prob_Solve
首頁
上一頁
1
下一頁
尾頁
[問題] DFS剪枝
[ Prob_Solve ]73 留言, 推噓總分: +13
作者: fatcat8127 - 發表於 2019/03/14 16:14(6年前)
11FCathyP: 先排序然後從最小的因數開始測,去掉不可能的情形03/20 23:01
12FCathyP: 1. 除出來的組數超過陣列大小 2. 陣列最大值大於因數03/20 23:02
13FCathyP: 進行DFS時1.跳過重複的起點2.false的情形如果目前和為零03/20 23:04
14FCathyP: 表示不可能完成分組,直接early return03/20 23:04
15FCathyP: 3.每組的起點都由陣列中未使用的最大值開始03/20 23:05
18FCathyP: 比方說A = [1,1,1,1,2,3],最初的DFS從sum = 0, pos = 0跑03/21 09:39
19FCathyP: 這層的DFS會以for (int i = pos;)開始測A[i] + sum03/21 09:41
20FCathyP: 同一層DFS上一個拿來測的叫A[j]好了, 當A[i] == A[j]跳過03/21 09:42
21FCathyP: 意思是說同一個位置不需要測試相同長度的A[i]03/21 09:43
22FCathyP: 另外假設該層DFS sum = 0,但找不到解,就表示沒有任何組合03/21 09:46
23FCathyP: 可以滿足條件,就可以early return03/21 09:46
28FCathyP: 質因數分解那一段不需要做, 直接從1開始測試03/21 17:36
29FCathyP: use array不需要每次都memset,一開始做一次就好03/21 17:38
30FCathyP: 因為當A[i]不能拿來用,應該把use[i]還原03/21 17:39
31FCathyP: DFS中的start應該由陣列尾端開始(Greedy)03/21 17:44
32FCathyP: 完成一個Group後,由陣列尾端往前找尚未使用的03/21 17:45
33FCathyP: 當下一層DFS的起點03/21 17:45
34FCathyP: nowLen=0時,DFS又回傳false就要early return了03/21 17:47
35FCathyP: 不需要繼續iterate下去因為這表示該A[i]找不到任何解03/21 17:48
36FCathyP: 變數應該避免使用global variable, 容易錯03/21 17:50
57FCathyP: 你的測資答案是161才對喔, 總和是48303/23 18:32
58FCathyP: 質因數分解不是必須 https://onlinegdb.com/S1e-oK7_V03/23 18:33
67FCathyP: 你的沒跑出117是出在line 39那邊沒檢查回傳值所以錯誤03/24 21:43
首頁
上一頁
1
下一頁
尾頁