题目链接:
https://leetcode-cn.com/problems/ones-and-zeroes/
题目描述:
题解:
class Solution {
public:
int findMaxForm(vector<string>& strs, int m, int n) {
vector<vector<vector<int>>> dp(strs.size() + 1, vector<vector<int>> (m + 1, vector<int>(n + 1, 0)));
int a = 0;
int b = 0;
for(int i = 1; i <= strs.size(); i++)
{
a = getNum(strs[i - 1], '0');
b = getNum(strs[i - 1], '1');
for(int j = 0; j <= m; j++)
{
for(int k = 0; k <= n; k++)
{
dp[i][j][k] = dp[i - 1][j][k];
if(a <= j && b <= k)
{
dp[i][j][k] = max(dp[i - 1][j][k], dp[i - 1][j - a][k - b] + 1);
}
}
}
a = 0;
b = 0;
}
return dp[strs.size()][m][n];
}
int getNum(string str, char ch)
{
int count = 0;
for(auto iter: str)
{
if(iter == ch)
count++;
}
return count;
}
};