一和零

题目链接:
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;
    }
};
原文地址:https://www.cnblogs.com/ZigHello/p/15140993.html