代码随想录——一和零(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)

相关推荐
摇滚侠3 分钟前
Spring Boot3零基础教程,StreamAPI 的基本用法,笔记99
java·spring boot·笔记
代码匠心4 分钟前
从零开始学Flink:事件驱动
java·大数据·flink·大数据处理
yours_Gabriel8 分钟前
【分布式事务】Seata分布式解决方案
java·分布式·微服务
一只游鱼17 分钟前
Springboot+BannerBanner(启动横幅)
java·开发语言·数据库
codingPower21 分钟前
升级mybatis-plus导致项目启动报错: net.sf.jsqlparser.statement.select.SelectBody
java·spring boot·maven·mybatis
lingran__23 分钟前
算法沉淀第十一天(序列异或)
c++·算法
一匹电信狗31 分钟前
【C++】红黑树详解(2w字详解)
服务器·c++·算法·leetcode·小程序·stl·visual studio
岑梓铭33 分钟前
《考研408数据结构》第六章(5.5树的应用)复习笔记
数据结构·笔记·考研·408·ds
不觉晚秋34 分钟前
极限挑战之一命速通哈夫曼树
c语言·数据结构··哈夫曼树
天才测试猿34 分钟前
Selenium三大等待详解
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例