leetcode 474 一和零 擊敗99 3

2021-10-02 06:03:28 字數 912 閱讀 1418

在計算機界中,我們總是追求用有限的資源獲取最大的收益。

現在,假設你分別支配著 m 個 0 和 n 個 1。另外,還有乙個僅包含 0 和 1 字串的陣列。

你的任務是使用給定的 m 個 0 和 n 個 1 ,找到能拼出存在於陣列中的字串的最大數量。每個 0 和 1 至多被使用一次。

注意:給定 0 和 1 的數量都不會超過 100。 給定字串陣列的長度不會超過 600。 示例 1:

輸入: array = , m = 5, n = 3 輸出: 4

解釋: 總共 4 個字串可以通過 5 個 0 和 3 個 1 拼出,即 「10」,「0001」,「1」,「0」 。 示例 2:

輸入: array = , m = 1, n = 1 輸出: 2

解釋: 你可以拼出 「10」,但之後就沒有剩餘數字了。更好的選擇是拼出 「0」 和 「1」 。

public

static

intfindmaxform

(string[

] strs,

int m,

int n)

int dp[

]=newint

[m +1]

[n +1]

;//對每個字串遍歷

for(

int k =

0; k < strs.length; k++

)else

}//將當前位置擁有的0和1減去需要花費的後,剩餘的dp值+1就是當前的可能最大值

for(

int i = m; i >= count0; i--)}

}return dp[m]

[n];

}

由於每個字串只花費一次,因此是乙個有限揹包問題,需要從後往前遍歷dp

LeetCode 474 一和零(動態規劃)

給你乙個二進位制字串陣列 strs 和兩個整數 m 和 n 請你找出並返回 strs 的最大子集的大小,該子集中 最多 有 m 個 0 和 n 個 1 如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 示例 1 輸入 strs 10 0001 111001 1 0 m 5,n 3...

動態規劃 leetcode 474 一和零

題目 給你乙個二進位制字串陣列 strs 和兩個整數 m 和 n 請你找出並返回 strs 的最大子集的大小,該子集中 最多 有 m 個 0 和 n 個 1 如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 思路 動態規劃,類似0 1揹包問題。選擇 每個字串,要麼選,要麼不選 狀...

01揹包問題之LeetCode474一和零詳解

題目 有n件物品和一個容量為v的揹包。第i件物品的費用是w i 價值是v i 求將哪些物品裝入揹包可使價值總和最大。基本思路 01揹包的特點有兩個 乙個是每件物品有且只有乙個,二是每個物品可以選擇放或者不放。一般狀態轉移方程定義為 dp i j max dp i 1 j dp i 1 j w i v...