C語言重構 416 分割等和子集

2021-10-21 14:33:17 字數 639 閱讀 2861

所有題目源**:git位址

題目

給定乙個只包含正整數的非空陣列。是否可以將這個陣列分割成兩個子集,使得兩個子集的元素和相等。

注意:每個陣列中的元素不會超過 100

陣列的大小不會超過 200

示例 1

:輸入:[1

,5,11

,5]輸出:

true

解釋: 陣列可以分割成 [1,

5,5] 和 [11]

. 示例 2

:輸入:[1

,2,3

,5]輸出:

false

解釋: 陣列不能分割成兩個元素和相等的子集.

方案:
class

solution

int target = sum /2;

vector<

int>

dp(target +1,

0);//接下來就是揹包問題了

for(

int i =

0; i < len; i++)}

return sum -

2* dp[target]==0

?true

:false;}

};

複雜度計算

416 分割等和子集

給定乙個只包含正整數的非空陣列。是否可以將這個陣列分割成兩個子集,使得兩個子集的元素和相等。注意 每個陣列中的元素不會超過 100 陣列的大小不會超過 200 示例 1 輸入 1,5,11,5 輸出 true 解釋 陣列可以分割成 1,5,5 和 11 示例 2 輸入 1,2,3,5 輸出 fals...

416 分割等和子集

主要題目中說了不超過100個數字,數字都不超過200。所以可能的和不會超過20000,這個量級對計算機來說不算大,所以考慮用dp考察每個可能的和是否存在。class solution int sum accumulate nums.begin nums.end 0 if sum 1 int siz ...

416 分割等和子集

題目描述 給定乙個只包含正整數的非空陣列。是否可以將這個陣列分割成兩個子集,使得兩個子集的元素和相等。注意 每個陣列中的元素不會超過 100 陣列的大小不會超過 200 示例 1 輸入 1,5,11,5 輸出 true 解釋 陣列可以分割成 1,5,5 和 11 示例 2 輸入 1,2,3,5 輸出...