2
讓
X,Y
子集{1,...,100n}
其中|X|=3n
和|Y|=7n
。找到X
的子集和B
Y
的子集,使得:兩者都不爲空,|A|=|B|
和sum a_i = sum b_i
。動態規劃尋找兩個子集
- 有
O(n^2)
資金,我們可以設定\{1,...,100n\}
(最大的一個是1+... +100n
即使這個人是不可能的,因爲X
和Y
不包括所有數字) - 有
O(n)
的基數(設置大小)爲每個總和(來自之前的項目符號) - 我們可以有一個
\{0,1\}
(布爾值)的表格,其大小爲O(n) X O(n^2)
,其中行代表基數,列代表數字。所以1
意味着我們可以創建一個子集基數i
和集合的總和j
- 第一行/列很容易計算,當然
現在基本上我需要遍歷所有單元格並更新他們每個單元格爲O(n)
。所以我們最終的總體時間複雜度爲O(n^4)
。
我該怎麼做?
我想我可以迭代它逐行;意思是,如果我想更新單元T[i,j]
(意思是一個大小爲i
的集合j
),那麼我可以尋找一組大小爲i-1
加上一些等於j
的術語。
但是!這可能是我們已經在前面的集合(大小i-1
)中使用了這個術語 - 問題!
非常感謝! – Elimination