Update 0474.一和零.md

This commit is contained in:
jianghongcheng
2023-06-04 07:41:05 -05:00
committed by GitHub
parent 8b69827fca
commit b9faa11851

View File

@ -210,19 +210,35 @@ class Solution {
``` ```
### Python ### Python
DP版本一
```python ```python
class Solution: class Solution:
def findMaxForm(self, strs: List[str], m: int, n: int) -> int: def findMaxForm(self, strs: List[str], m: int, n: int) -> int:
dp = [[0] * (n + 1) for _ in range(m + 1)] # 默认初始化0 dp = [[0] * (n + 1) for _ in range(m + 1)] # 创建二维动态规划数组,初始化0
for s in strs: # 遍历物品
zeroNum = s.count('0') # 统计0的个数
oneNum = len(s) - zeroNum # 统计1的个数
for i in range(m, zeroNum - 1, -1): # 遍历背包容量且从后向前遍历
for j in range(n, oneNum - 1, -1):
dp[i][j] = max(dp[i][j], dp[i - zeroNum][j - oneNum] + 1) # 状态转移方程
return dp[m][n]
```
DP版本二
```python
class Solution:
def findMaxForm(self, strs: List[str], m: int, n: int) -> int:
dp = [[0] * (n + 1) for _ in range(m + 1)] # 创建二维动态规划数组初始化为0
# 遍历物品 # 遍历物品
for str in strs: for s in strs:
ones = str.count('1') ones = s.count('1') # 统计字符串中1的个数
zeros = str.count('0') zeros = s.count('0') # 统计字符串中0的个数
# 遍历背包容量且从后向前遍历 # 遍历背包容量且从后向前遍历
for i in range(m, zeros - 1, -1): for i in range(m, zeros - 1, -1):
for j in range(n, ones - 1, -1): for j in range(n, ones - 1, -1):
dp[i][j] = max(dp[i][j], dp[i - zeros][j - ones] + 1) dp[i][j] = max(dp[i][j], dp[i - zeros][j - ones] + 1) # 状态转移方程
return dp[m][n] return dp[m][n]
``` ```
### Go ### Go