代码随想录——一和零(Leetcode474)

题目链接

0-1背包

java 复制代码
class Solution {
    public int findMaxForm(String[] strs, int m, int n) {
        // 本题m,n为背包两个维度
        // dp[i][j]:最多右i个0和j个1的strs的最大子集大小
        int[][] dp = new int[m + 1][n + 1];
        // 遍历strs中字符串
        for(String str : strs){
            int num0 = 0;
            int num1 = 0;
            for(int i = 0; i < str.length(); i++){
                if(str.charAt(i) == '0'){
                    num0++;
                }
                if(str.charAt(i) == '1'){
                    num1++;
                }
            }
             for(int i = m; i >= num0; i--){
                for(int j = n; j >= num1; j--){
                    dp[i][j] = Math.max(dp[i][j], dp[i - num0][j - num1] + 1);
                }
             }
        }
        return dp[m][n];
    }
}

背包递推公式:dp[i][j] = max(dp[i][j], dp[i - num0][j - num1] + 1)

相关推荐
何中应几秒前
EasyExcel使用(二:写出)
java·后端·maven·excel
Codeking__22 分钟前
链表算法综合——重排链表
网络·算法·链表
minji...1 小时前
数据结构 堆(4)---TOP-K问题
java·数据结构·算法
命苦的孩子1 小时前
Java 中的排序算法详解
java·开发语言·排序算法
Seven971 小时前
Spring AI 框架中如何集成 MCP?
java
技术卷1 小时前
详解力扣高频SQL50题之610. 判断三角形【简单】
sql·leetcode·oracle
开往19821 小时前
spring boot整合mybatis
java·spring boot·mybatis
AI_Keymaker2 小时前
一句话生成3D世界:腾讯开源混元3D模型
算法
北京_宏哥2 小时前
《刚刚问世》系列初窥篇-Java+Playwright自动化测试-27- 操作单选和多选按钮 - 上篇(详细教程)
java·前端·面试
Leon_vibs2 小时前
当 think 遇上 tool:深入解析 Agent 的规划之道
算法