416 分割等和子集

2021-09-29 22:03:07 字數 801 閱讀 5320

主要題目中說了不超過100個數字,數字都不超過200。所以可能的和不會超過20000,這個量級對計算機來說不算大,所以考慮用dp考察每個可能的和是否存在。

class

solution

int sum=

accumulate

(nums.

begin()

,nums.

end(),

0);if

(sum&1)

int siz=nums.

size()

; vector<

bool

>

dp(sum/2+

1,false);

for(

int i=

0;i1;

++i)

for(

int i=

1;i++i)}}

return dp.

back()

;}};

2.dfs

偷懶截的別人的

要注意剪枝,並且先排序,要從大的開始選。如果從小的開始選會多很多可能。

class

solution

bool

canpartition

(vector<

int>

& nums)

};

416 分割等和子集

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

416 分割等和子集

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

416 分割等和子集

給定乙個只包含正整數的非空陣列。是否可以將這個陣列分割成兩個子集,使得兩個子集的元素和相等。注意 每個陣列中的元素不會超過 100 陣列的大小不會超過 200 判斷所給陣列是否滿足條件,若陣列中任意數字和為總和二分之一 總和必須為偶數 則為true class solution def canpar...