R2-dp篇.
思路参考:
class Solution:
def findMaxForm(self, strs: List[str], m: int, n: int) -> int:
#1.dp数组含义:dp[i][j]表示最多有i个0和j个1的str最大子集大小为dp[i][j]
#2.递推公式
#3.初始化dp数组
#4.遍历顺序确定(物品从前往后遍历,背包容量从后往前遍历)
#5.dp数组推导举例
dp=[[0]*(n+1) for _ in range(m+1)]
for str in strs:
ones=str.count('1')
zeros=str.count('0')
for i in range(m,zeros-1,-1):
for j in range(n,ones-1,-1):
dp[i][j]=max(dp[i][j],dp[i-zeros][j-ones]+1)
return dp[m][n]
ps:
dp5部曲
ones=str.count('1')
计算字符串里某个字符的数量。