LeetCode 377 組合總和

2022-06-23 10:15:11 字數 1027 閱讀 1206

給定乙個由正整數組成且不存在重複數字的陣列,找出和為給定目標正整數的組合的個數。

nums = [1, 2, 3]

target = 4

所有可能的組合為:

(1, 1, 1, 1)

(1, 1, 2)

(1, 2, 1)

(1, 3)

(2, 1, 1)

(2, 2)

(3, 1)

請注意,順序不同的序列被視作不同的組合。

因此輸出為 7。

class solution 

};

這是統計成功次數的dfs問題,設當前層res = 0,每次成功時return 1,再將res加起來,最後就能得到我們需要的結果。

class solution 

private:

int dfs(vector& nums, int target, int* memo)

};

由於本題對回溯的要求限制非常少:可以使用重複數字,排列可以有不同順序。

進一步分析可以發現,我們可以從之前的狀態推斷現在的狀態,舉個例子當nums = [1, 3, 4],則dfs(7) = (dfs(1) + dfs(6)) + (dfs(3) + dfs(4)) + (dfs(4) + dfs(3))(括號中為target的值),所以我們可以記憶下當前target的結果,方便後續直接呼叫。

class solution 

};

動態規劃方法和帶記憶遞迴,其實就是乙個自底向上和自頂向下的區別。這裡需要將dp初始化為0,因為dp[i]使用了+=dp[0]被作為動態規劃的邊界條件,代表target = 0時可行結果數要加1。

LeetCode 377 組合總和

這道題目是在陣列中找到和為給定目標正整數的組合的個數,題目如下所示 這道題目就難在不限陣列中元素使用的個數,我們如果用窮舉的方法很難得到正確的答案。於是我們可以想到用動態規劃的思想來解決這個問題。首先我們求的是和,我們就可以把和進行拆分,如題目中的例子為例,num s 1 2,3 nums 1,2,...

leetcode 377 組合總和

給定乙個由正整數組成且不存在重複數字的陣列,找出和為給定目標正整數的組合的個數。示例 nums 1,2,3 target 4 所有可能的組合為 1,1,1,1 1,1,2 1,2,1 1,3 2,1,1 2,2 3,1 請注意,順序不同的序列被視作不同的組合。因此輸出為 7。不像組合總和 組合總和 ...

leetcode377 組合總和4

給定乙個由正整數組成且不存在重複數字的陣列,找出和為給定目標正整數的組合的個數。示例 nums 1 2,3 target 4所有可能的組合為 1 1,1 1 1,1,2 1 2,1 1,3 2 1,1 2,2 3 1 請注意,順序不同的序列被視作不同的組合。因此輸出為 7。方法一 遞迴 超時 cla...