要求:字符串数组找0和1不超过m和n,最大子集长度
思路:多维01背包我草,dp[i][j][k]表示i个串构成不超过j个0和k个1的最大长度,递推应该要取dp[i-1][j]和dp[i-1][j-v]+1的max,j和k要嵌套循环
class Solution {
public:
int findMaxForm(vector<string>& strs, int m, int n) {
vector<vector<int>> dp(m+1,vector<int>(n+1));
for(int i=1;i<=strs.size();++i){
int zeros=0,ones=0;
for(auto &c:strs[i-1])
if(c=='0')++zeros;
else ++ones;
for(int j=m;j>=0;--j)
for(int k=n;k>=0;--k)
if(j>=zeros&&k>=ones)
dp[j][k]=max(dp[j-zeros][k-ones]+1,dp[j][k]);
}
return dp[m][n];
}
};