1 回答

TA貢獻1874條經(jīng)驗 獲得超12個贊
遇到字符串時s
,基本上有兩種選擇。它要么屬于最大解,要么不屬于。
如果這樣做,集合的大小會增加 1,但剩下的 1 和 0 會減少。如果您不使用它,集合的大小將保持不變,但如果保留 1 和 0,則數(shù)字也會保持不變。
該表dp
代表了到目前為止您可以獲得的最大此類集合,用于“左”的不同數(shù)量的 1 和 0。例如。dp[m][n]
表示到目前為止您可以使用m
0 和n
1 獲得的最佳值。同樣,對于dp[2][3]
其余字符串,您可以使用 2 個零和 3 個一。
讓我們把它包裝在一起:
對于一些給定數(shù)量的零 ( i
) 留下來使用,一些零 ( j
) 留下來使用,以及一個字符串s
:
1 + dp[i - zeros][j - ones]
表示如果您決定添加到集合中的最大集合s
(并且您只剩下更少的 1 和 0)dp[i][j]
意味著你沒有接受這個元素,繼續(xù)前進。
當您調(diào)用max()
這兩個值時,您基本上是在說:我想要這兩個選項中更好的一個。
我希望這能回答前兩個問題,即為什么它是最大的以及 dp 線的含義。
該解決方案還被描述為“針對 2D 空間優(yōu)化的 3d-DP:dp[j][k]:i 維度經(jīng)過優(yōu)化以就地使用?!?nbsp;這意味著什么?
在這里,你有 3d 問題:你迭代的字符串本身 - 但你沒有數(shù)組的另一個維度。您將其優(yōu)化為就地,因為您始終只需要前一個字符串,而不需要比它“更舊”的字符串,從而節(jié)省了寶貴的空間。
添加回答
舉報