代码随想录: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];
    }
};
相关推荐
Tisfy12 小时前
LeetCode 3650.边反转的最小路径总成本:Dijkstra算法
算法·leetcode··dijkstra·题解·迪杰斯特拉
2401_8384725112 小时前
自定义操作符重载指南
开发语言·c++·算法
鹿角片ljp12 小时前
力扣136.只出现一次的数字-异或和HashMap
java·数据结构·算法·leetcode
W_a_i_T12 小时前
【Coding日记】菜鸟编程C语言100例——第三题⚠️
c语言·开发语言·经验分享·算法·菜鸟编程
TracyCoder12312 小时前
LeetCode Hot100(5/100)——11. 盛最多水的容器
算法·leetcode
weixin_4521595512 小时前
多协议网络库设计
开发语言·c++·算法
你怎么知道我是队长12 小时前
C语言---排序算法2---选择排序法
c语言·算法·排序算法
啊阿狸不会拉杆12 小时前
《数字信号处理》第三章 离散傅里叶变换 (DFT)
算法·matlab·深度优先·信号处理·数字信号处理·dsp
2301_7886624012 小时前
C++与微服务架构
开发语言·c++·算法
你怎么知道我是队长13 小时前
C语言---排序算法3---插入排序法
c语言·算法·排序算法