力扣题解(一和零)

474. 一和零

给你一个二进制字符串数组 strs 和两个整数 m 和 n 。

请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个 1 。

如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。

思路:

本题可以看成有两个限制条件的01背包问题,因此可以规定dp[i][j][k]表示前i个子串,0的个数不大于j,1的个数不大于k的情况下的最长长度。则dp[i][j][k]=max(dp[i-1][j][k] ,dp[i-1][j-z[i][k-o[i]]+1),其中z[i]表示第i个子序列中0的个数,o[i]表示第i个子序列中1的个数。

初始化:

j,k均为0的时候,无论i取什么值都存在且仅存在一个不取的情况下让j,k均为0,因此dp[i][0][0]=1.

优化:可以把dp从三维换成二维,因为此处dp[i][][]只和dp[i-1][][]有关,因此可以将第一维去掉,但需要注意此时必须让j,k从大到小变化,这样才能保证dp[j][k]是上一个i所对应的dp。

class Solution {
public:int findMaxForm(vector<string>& strs, int m, int n) {int row=strs.size();vector<pair<int,int>>strnum(row+1,{0,0});vector<vector<int>>dp(m+1,vector<int>(n+1,0));for(int i=0;i<row;i++){for(auto e:strs[i]){if(e=='0'){strnum[i+1].first++;}elsestrnum[i+1].second++;}for(int j=m;j>=strnum[i+1].first;j--){for(int k=n;k>=strnum[i+1].second;k--){dp[j][k]=max(dp[j][k],dp[j-strnum[i+1].first][k-strnum[i+1].second]+ 1);              }}}return dp[m][n];}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/47507.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

51单片机嵌入式开发:15、STC89C52RC操作蜂鸣器实现一个music音乐播放器的音乐盒

STC89C52RC操作蜂鸣器实现一个music音乐播放器的音乐盒 1 概述2 蜂鸣器操作方法3 蜂鸣器发出音声4 硬件电路5 软件实现6 整体工程&#xff1a;7 总结 1 概述 要实现一个基于STC89C52RC单片机的音乐盒&#xff0c;可以按照以下步骤进行&#xff1a; &#xff08;1&#xff09;硬…

STM32项目分享:智能宠物喂食系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片&#xff1a; 哔哩哔哩视频链接&#xff1a; https://www.bilibili.com/video/BV1zy411z7…

关于对CSDN的谴责

关于对CSDN的谴责 如果不是心血来潮登了一次旧帐号我是万万不会想到&#xff0c;所有的文章都被设置成了仅VIP可见。 CSDN你的VIP有多不受人待见您不知道吗&#xff1f;为什么要把我用于你开通VIP刷绩效的工具&#xff1f; 这种东西不应该首先经过同意再开启吗&#xff1f;默认…

JavaWeb day01-HTML入门

Web前端 课程安排 HTML、CSS简介 HTML快速入门 实现标题排版 新闻标题样式

深度学习程序环境配置

深度学习环境配置 因为之前轻薄本没有显卡跑不起来&#xff0c;所以换了台电脑重新跑程序&#xff0c;故记录一下配置环境的步骤及常见错误 本人数学系&#xff0c;计算机部分知识比较匮乏&#xff0c;计算机专业同学可以略过部分内容 深度学习环境配置 深度学习环境配置 CUD…

MATLAB算法实战应用案例精讲-【数模应用】多元方差分析MANOVA(附MATLAB、python和R语言代码实现)

目录 知识储备 方差分析 一、单因素方差分析 二、双因素方差分析 三、多因素方差分析 四、事后多重比较 五、重复测量方差 六、协方差分析 七、多元方差分析 算法原理 多元方差分析的特点 多元方差分析的使用条件 应用案例 代码实现 MATLAB python R语言 知…

StringBuilder, Stringbuffer,StringJoiner

StringBuilder StringBuilder 代表可变字符串对象&#xff0c;相当于是一个容器&#xff0c;里面装的字符串是可以改变的&#xff0c;就是用来操作字符串的。 StringBuilder 比String更适合做字符串的修改操作&#xff0c;效率更高&#xff0c;代码更加的简洁。 public clas…

在结束的地方重新开始:十指之梢与新的轮回

一、前述 如果你想感受人潮汹涌&#xff0c;那么就请到大城市繁华街区的十字路口去看一看&#xff0c;尤其是节假日。 所以&#xff0c;交警对于城市交通的通畅&#xff0c;人们出行顺利的保障&#xff0c;是异常重要的。 交警&#xff0c;指挥交通有很多工具和方法&#xff0…

vscode 文件颜色变绿色

解决&#xff1a;关闭git功能 在设置中搜索Git:Enabled&#xff0c;取消Decorations: Enabled的勾选

速盾:cdn能防御ddos吗?

CDN&#xff08;内容分发网络&#xff09;是一种广泛应用于互联网中的技术&#xff0c;它通过将内容分发到全球各地的服务器上&#xff0c;以提高用户在访问网站时的加载速度和稳定性。然而&#xff0c;CDN是否能够有效防御DDoS&#xff08;分布式拒绝服务&#xff09;攻击是一…

UE5 C++在Cesium上给定一个坐标垂直地面射线正交的地形高度

一.方法一&#xff1a;需要一个Actor里&#xff0c;向下垂直射线。自身高度-射线距离。 #include "CesiumGlobeAnchorComponent.h" #include "CesiumOriginShiftComponent.h" #include "GeoTransforms.h" #include "CesiumGeoreference.h&…

OMOST 作画能力的硬核解析[C#]

1. 简介 1.1 什么是 OMOST&#xff1f; OMOST 是一款利用深度学习和生成对抗网络&#xff08;GAN&#xff09;技术的 AI 作画工具&#xff0c;能够自动生成高质量的绘画作品。它广泛应用于艺术创作、广告设计和教育培训等领域。 1.2 OMOST 的核心功能 自动生成绘画风格转换…

【Python】探索 Python 中的 callable 方法

为何每次早餐 仍然魂离魄散 原来 那朝分手都要啜泣中上班 明明能够过得这关 赢回旁人盛赞 原来 顽强自爱这样难 难得的激情总枉费 残忍的好人都美丽 别怕 你将无人会代替 &#x1f3b5; 陈慧娴《情意结》 在 Python 编程中&#xff0c;理解对象的可调用性…

04-用户画像+sqoop使用

优点 sqoop的作用是实现数据的导入和导出&#xff0c;主要是对数据库和数据仓库之间的操作 只要是支持jdbc连接的数据库都可以使用sqoop操作 添加Sqoop到环境变量中 export SQOOP_HOME/export/server/sqoop export PATH$PATH:$SQOOP_HOME/bin:$SQOOP_HOME/sbinsource /etc/…

内联汇编清楚变量指定位

static inline void clear_bit(int nr, volatile unsigned long *addr) {__asm__ __volatile__("lock ; ""btrl %1,%0": "m" (*addr): "Ir" (nr)); } 这段代码是一个内联函数&#xff0c;用于在特定地址的位图中清除一个位。它使用了…

Bootstrap 表单

Bootstrap 表单 Bootstrap 是一个流行的前端框架&#xff0c;用于快速开发响应式和移动设备优先的网页。它包含了一套丰富的组件&#xff0c;其中包括表单元素&#xff0c;这些元素可以帮助开发者创建风格统一、易于使用的表单界面。本文将详细介绍 Bootstrap 表单的基础知识&…

进程线程协程

协程&#xff08;coroutine&#xff09;是一种更轻量级的并发编程方式&#xff0c;它可以在一个线程内实现多任务的切换和执行。与进程和线程相比&#xff0c;协程有其独特的特点和优势。 理解协程 协程是一种可以暂停和恢复执行的函数。与传统函数不同&#xff0c;协程可以在…

嵌入式单片机软件与硬件的结合方法分析

不知道大家有没有疑惑,为什么软件能控制硬件?关于这个问题,给出直观解释的文章:本文分析STM32单片机到底是如何软硬件结合的,分析单片机程序如何编译,运行。 软硬件结合 初学者,通常有一个困惑,就是为什么软件能控制硬件?就像当年的51,为什么只要写P1=0X55,就可以…

Leetcode3212. 统计 X 和 Y 频数相等的子矩阵数量

Every day a Leetcode 题目来源&#xff1a;3212. 统计 X 和 Y 频数相等的子矩阵数量 解法1&#xff1a;二维前缀和 维护二维前缀和&#xff0c;分别统计 ‘X’ 和 ‘Y’ 的个数。 统计足以下条件的子矩阵数量&#xff1a; 包含 grid[0][0]‘X’ 和 ‘Y’ 的频数相等。至少…

贪吃蛇超精讲(C语言)

前言 如果你还是个萌新小白&#xff0c;那么该项目的攻克过程一定会十分艰难。虽然作者已经将文章尽可能写的逻辑清晰&#xff0c;内容详细。但所谓“纸上得来终觉浅”&#xff0c;在讲到陌生结构和函数时&#xff0c;大家请一定自己动手去敲一遍代码&#xff0c;这很重要&…