leetcode377 組合總和4

2021-10-06 08:13:07 字數 983 閱讀 1043

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

示例:

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

void

dfs(vector<

int>

& nums,

int target)

for(

int i =

0; i < nums.

size()

;++i)

return;}

};

方法二:

動態規劃。這道題不要看作是揹包問題或者是零錢問題,而要看作是爬樓梯問題。給定的nums陣列表示每次可以爬的樓梯的層數,target表示要爬的總層數,問題轉化為,每次可以爬nums層樓梯,有多少種方法能夠爬到target。

dp[i]表示爬i層樓梯,共有多少種方法。

可以選擇從i-nums[0]位置,一次性爬nums[0]層;

可以選擇從i-nums[1]位置,一次性爬nums[1]層;

…以此類推;

注意這道題會整型溢位,因此需要解決溢位問題;

class

solution

}return dp.

back()

% int_max;}}

;

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。不像組合總和 組合總和 ...

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。class solution ...