leecode474.一和零
这道题感觉像是01背包问题的进阶,容量有两个维度,一个是m个0,一个是n个1
class Solution {
public:
int findMaxForm(vector<string>& strs, int m, int n) {
vector<vector<int>> dp(m+1,vector<int>(n+1,0));
for(string str:strs){
int countZero=0,countOne=0;
for(char ch:str){
if(ch=='0')
countZero++;
else
countOne++;
}
for(int i=m;i>=countZero;i--)
for(int j=n;j>=countOne;j--)
dp[i][j]=max(dp[i][j],dp[i-countZero][j-countOne]+1);
}
return dp[m][n];
}
};