当前位置: 首页 > news >正文

012动态规划

474. 一和零

中等

相关标签

premium lock icon相关企业

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

请你找出并返回 strs 的最大子集的长度,该子集中 最多m0n1

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

示例 1:

输入:strs = ["10", "0001", "111001", "1", "0"], m = 5, n = 3
输出:4
解释:最多有 5 个 0 和 3 个 1 的最大子集是 {"10","0001","1","0"} ,因此答案是 4 。
其他满足题意但较小的子集包括 {"0001","1"} 和 {"10","1","0"} 。{"111001"} 不满足题意,因为它含 4 个 1 ,大于 n 的值 3 。

示例 2:

输入:strs = ["10", "0", "1"], m = 1, n = 1
输出:2
解释:最大的子集是 {"0", "1"} ,所以答案是 2 。

提示:

  • 1 <= strs.length <= 600
  • 1 <= strs[i].length <= 100
  • strs[i] 仅由 '0''1' 组成
  • 1 <= m, n <= 100

class Solution {
public:int findMaxForm(vector<string>& strs, int m, int n) {// 定义二维dp数组:dp[i][j] 表示最多使用 i 个 0、j 个 1 时能选的最大字符串数量vector<vector<int>> dp(m+1, vector<int>(n+1, 0));// 遍历每一个字符串(相当于 01背包 中的每件物品)for(auto str : strs) {// 统计当前字符串中 0 的数量 x,1 的数量 yint x = 0;int y = 0;for(auto val : str) {if(val == '0') {x++;  // 统计 0 的个数} else {y++;  // 统计 1 的个数}}// 二维 01 背包逆序遍历,防止重复选取当前字符串for(int i = m; i >= x; i--) {for(int j = n; j >= y; j--) {// 状态转移方程:// 不选当前字符串 → 保持 dp[i][j]// 选当前字符串 → dp[i - x][j - y] + 1(+1 表示当前字符串)dp[i][j] = max(dp[i][j], dp[i - x][j - y] + 1);}}}// 最终答案:最多使用 m 个 0、n 个 1 能选择的最大数量return dp[m][n];}
};

  • dp[i] [j] :背包容量能装i个0和j个1,最多可以背dp[i] [j] 个物品(物品的数量即为价值)

  • dp[i] [j] = max(dp[i-x] [j-y]+1,dp[i] [j])

  • Init: dp[0] [0] = 0

    只能装0个0和1,最多只能背0个物品

    其余的也全部初始化为0,防止影响最大值max的取值

  • 先遍历物品,在遍历背包容量(有i和j两个维度,先后顺序无所谓)

http://www.jsqmd.com/news/592642/

相关文章:

  • 为Darktable注入胶片灵魂:t3mujinpack胶片模拟包完全指南
  • 推荐2款提升办公效率的神级软件,简真是打工人的神器!
  • 别再手动配MCAL了!手把手教你用EB Tresos Studio的Plugin和XDM文件自动生成配置代码
  • ide-eval-resetter完全指南:突破JetBrains IDE试用期限制,实现开发环境自由
  • 告别重复造轮子:用快马一键生成tokenp钱包交互模块,极速提升dApp开发效率
  • 实战演练:基于快马生成电商商品多维度排序业务代码
  • 统信UOS桌面系统高效运维:从入门到精通的命令行指南
  • 黑苹果自动化配置与智能生成工具:从复杂调试到一键部署的完整指南
  • FNF-PsychEngine完全指南:5个简单步骤让你快速创建个性化音乐游戏
  • ai辅助开发:在wsl2中借助快马模型解决python爬虫反爬难题
  • 开源Verilog仿真神器Icarus Verilog:3分钟快速上手指南
  • 快速验证openclaw安装:用快马一键生成环境配置与测试脚本
  • 实战指南:基于快马平台开发并部署一个exness简易行情看板应用
  • 如何让供应链效率提升45%?frePPLe开源计划系统的实战价值
  • NSGA-Ⅲ实战:在TensorFlow/PyTorch模型超参数调优中应用多目标优化
  • 3大技术突破让shadPS4模拟器实现跨平台PS4游戏体验
  • 效率倍增,用快马AI一键生成数据库批量备份与巡检脚本
  • 让AI替你思考复杂查询:快马平台生成智能数据库助手与优化方案
  • 利用快马平台快速生成ccswitch一键安装脚本原型,验证跨平台部署流程
  • FPGA新手必看:Xilinx Vivado除法器IP核(divider)从配置到仿真的避坑指南
  • 抖音批量下载神器:3分钟学会无水印视频批量保存技巧
  • 3大场景告诉你:为什么AutoHotkey-v1.0是Windows自动化的终极选择
  • VirtualLab进阶实验指南:单缝衍射参数优化与动态仿真
  • 新手福音:通过快马平台生成的示例代码,轻松迈出openclaw启动第一步
  • AI协同创作新体验:在快马平台复现与拓展网易方锐式工作流
  • 第29章 2023真题作文
  • 告别屏幕闪烁困扰:Stillcolor轻松解决苹果硅Mac护眼难题
  • Genshin Impact 模型导入工具完全指南
  • 告别重复造轮子:用快马一键生成高性能文件分块上传模块
  • OpenClaw进阶配置:千问3.5-9B模型参数调优全解析