Partition Equal Subset Sum

剛看到這個問題我就隱約回憶起了cs170時候學過的subset問題,然后我發現我完全不記得那個東西是怎么做的。【感覺都是套路阿,都拿這種困擾計算機多年的大題叫人面試即興做】



Dynamic Programming implementation.

Idea: 先要identify子問題。 這個跟簡單版DP不太一樣,簡單的DP 子問題就一個參數,這里兩個參數。 1個是子的target sum. 還有一個是子的given array.?

也就是比如說原本我們要判斷target sum =100, array size =0--1000 elements.

我們可以拆分成小的問題,假如target只要10, given array 10個數,能不能sum 出這個結果。

最后是identify subproblem之間的進階關系:

如果target sum i>= set[j-1], 比input array 只看到j-1這個元素,要大。我們進行判斷:

?target sum=i, array size=0...j的答案要嘛完全等于上一輪的結果,要嘛等于等于子問題

subsets[i-set(j-1)[j-1]]的結果。


復習完subset sum問題之后再看這道題就簡單很多。(其實也不能說簡單很多吧hhh)

最關鍵的是如何把這道題變成subset sum problem. 我們缺的東西就是target sum。 這個如果花一點時間想就知道target sum 其實就是所有數字加起來除2.?

最tricky的一點就是要判斷target sum是否能被2整除。 如果不行,直接不用判斷了。


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容