代码随想录:474. 一和零

474. 一和零

二维费用背包问题

cpp 复制代码
class Solution {
public:
    int findMaxForm(vector<string>& strs, int m, int n) {
        int l = strs.size();
        int dp[110][110] = {0};
        //dp[i][j]表示有i个0,j个1的子集长度
        for (int i = 0; i < l; i++) {
            //遍历字符数组
            int one = 0, zero = 0;
            int len = strs[i].size();
            for (int j = 0; j < len; j++) {
                if (strs[i][j] == '1')
                    one++;
                else
                    zero++;
            }
            //算第i个字符串有多少0,多少1
            for (int j = m; j >= zero; j--)
                for (int k = n; k >= one; k--)
                    dp[j][k] = max(dp[j][k], dp[j - zero][k - one] + 1);
                    //更新dp数组,要么维持前一个字符串的结果,要么取该字符串
        }
        return dp[m][n];
    }
};
相关推荐
TracyCoder12334 分钟前
LeetCode Hot100(13/100)——238. 除了自身以外数组的乘积
算法·leetcode
CoderCodingNo35 分钟前
【GESP】C++五级练习题 luogu-P3353 在你窗外闪耀的星星
开发语言·c++·算法
Anastasiozzzz39 分钟前
LeetCode Hot100 215. 数组中的第K个最大元素
数据结构·算法·leetcode
让我上个超影吧40 分钟前
【力扣76】最小覆盖子串
算法·leetcode·职场和发展
近津薪荼1 小时前
优选算法——双指针5(单调性)
c++·学习·算法
2401_857683541 小时前
C++代码静态检测
开发语言·c++·算法
时艰.1 小时前
JVM 垃圾收集器(G1&ZGC)
java·jvm·算法
2401_838472511 小时前
内存泄漏自动检测系统
开发语言·c++·算法
m0_706653231 小时前
基于C++的爬虫框架
开发语言·c++·算法
diediedei2 小时前
嵌入式数据库C++集成
开发语言·c++·算法