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

相关推荐
疾风sxp几秒前
nl2sql技术实现自动sql生成之Spring AI Alibaba Nl2sql
java·人工智能
smj2302_796826522 分钟前
解决leetcode第3777题使子字符串变交替的最少删除次数
python·算法·leetcode
fei_sun5 分钟前
【数据结构】2025年真题
数据结构
我在人间贩卖青春8 分钟前
线性表之队列
数据结构·队列
Tisfy13 分钟前
LeetCode 2110.股票平滑下跌阶段的数目:数学(一次遍历)
数学·算法·leetcode·题解
1024小神14 分钟前
swift中 列表、字典、集合、元祖 常用的方法
数据结构·算法·swift
ULTRA??16 分钟前
Informed RRT*实现椭圆启发式采样
c++·算法
Swizard17 分钟前
告别样本不平衡噩梦:Focal Loss 让你的模型学会“划重点”
算法·ai·训练
BullSmall19 分钟前
Tomcat11证书配置全指南
java·运维·tomcat