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

相关推荐
AIAdvocate36 分钟前
Pandas_数据结构详解
数据结构·python·pandas
jiao000011 小时前
数据结构——队列
c语言·数据结构·算法
kaneki_lh1 小时前
数据结构 - 栈
数据结构
铁匠匠匠1 小时前
从零开始学数据结构系列之第六章《排序简介》
c语言·数据结构·经验分享·笔记·学习·开源·课程设计
C-SDN花园GGbond1 小时前
【探索数据结构与算法】插入排序:原理、实现与分析(图文详解)
c语言·开发语言·数据结构·排序算法
迷迭所归处2 小时前
C++ —— 关于vector
开发语言·c++·算法
架构文摘JGWZ3 小时前
Java 23 的12 个新特性!!
java·开发语言·学习
leon6253 小时前
优化算法(一)—遗传算法(Genetic Algorithm)附MATLAB程序
开发语言·算法·matlab
CV工程师小林3 小时前
【算法】BFS 系列之边权为 1 的最短路问题
数据结构·c++·算法·leetcode·宽度优先
Navigator_Z3 小时前
数据结构C //线性表(链表)ADT结构及相关函数
c语言·数据结构·算法·链表