力扣 39 組合總和 dfs

2022-10-08 22:18:33 字數 1286 閱讀 7421

不同組合,並以列表形式返回。你可以按任意順序返回這些組合。

candidates中的同乙個數字可以無限制重複被選取。如果至少乙個數字的被選數量不同,則兩種組合是不同的。 

對於給定的輸入,保證和為target的不同組合數少於150個。

示例 1:

輸入:candidates = [2,3,6,7], target = 7 輸出:[[2,2,3],[7]] 解釋: 2 和 3 可以形成一組候選,2 + 2 + 3 = 7 。注意 2 可以使用多次。 7 也是乙個候選, 7 = 7 。 僅有這兩種組合。
示例 2:

輸入: candidates = [2,3,5], target = 8 輸出: [[2,2,2,2],[2,3,3],[3,5]]
示例 3:

輸入: candidates = [2], target = 1 輸出:

c++11 的 list deque 和 vector 增加了emplace_back函式,相對於push_back函式,它減少了一次類的構造,因此效率更高,推薦使用。

dfs題目,按dfs寫就行,但是題目選取可以重複,所以去掉之前的放重複的標誌位

檢視**

檢視**

class solution 

void dfs(vectorcandidates, int target,int idx,int len,vectorcur,int sum)

for(int i=idx;i> combinationsum(vector& candidates, int target)

};

鏈結

class solution 

if (target == 0)

// 直接跳過

dfs(candidates, target, ans, combine, idx + 1);

// 選擇當前數

if (target - candidates[idx] >= 0)

}vector> combinationsum(vector& candidates, int target)

};

力扣39 組合總和

給定乙個無重複元素的陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的數字可以無限制重複被選取。有時候剪枝不止需要加上附加條件,還需要對原有資料集進行改動,比如排序。class solution ...

力扣 中等 39 組合總和

給定乙個無重複元素的陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的數字可以無限制重複被選取。說明 所有數字 包括 target 都是正整數。解集不能包含重複的組合。回溯 public list...

力扣39 組合總和 遞迴 回溯 DFS

給定乙個無重複元素的陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的數字可以無限制重複被選取。說明 所有數字 包括 target 都是正整數。解集不能包含重複的組合。示例 1 輸入 candid...