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

【力扣刷题 | 第二十五天】

目录

前言:

  474. 一和零 - 力扣(LeetCode)

总结:


前言:

        今天我们依旧暴打动态规划

  474. 一和零 - 力扣(LeetCode)

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

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

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

其实这也是一个背包问题,只不过以前我们的限制条件只有一个重量,现在变成了两个,一个是,m,一个是n。那么我们就可以抽象的看他为一个二维的01背包问题。

那么我们就按照动态规划五部曲走:

1.确定dp数组的含义及其下标方式:dp[i][j] 表示装满 i 个0 和 j 个1 的背包中的最大子集长度

class Solution {
public:int findMaxForm(vector<string>& strs, int m, int n) {vector<vector<int>> dp(m + 1, vector<int> (n + 1, 0)); for (string str : strs) { int one = 0, zero = 0;for (char c : str) {if (c == '0') zero++;else one++;}for (int i = m; i >= zero; i--){ for (int j = n; j >= one; j--) {dp[i][j] = max(dp[i][j], dp[i - zero][j - one] + 1);}}}return dp[m][n];}};

总结:

                动态规划很难一眼看出来就是背包问题,要仔细甄别

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

http://www.lryc.cn/news/115425.html

相关文章:

  • GO学习之 函数(Function)
  • Jstack线上问题排查
  • VIM 编辑器: Bram Moolenaar
  • 鸿蒙应用开发指南:从零开始构建一款智能音乐播放器
  • 如何实现对主机的立体监控?
  • 机器学习笔记:李宏毅ChatGPT Finetune VS Prompt
  • 中电金信:逐数兴业 智启未来——“数据二十条”影响之解读 (下)
  • 54款宝藏级AIGC工具分享(claude,Midjourney,Stable Diffusion等)
  • bigemap如何添加在线地图源?
  • 84. 柱状图中最大的矩形
  • 嘉楠勘智k230开发板上手记录(二)--hello world
  • ArcGIS Pro实践技术应用——暨基础入门、制图、空间分析、影像分析、三维建模、空间统计分析与建模、python融合、案例应用全流程科研能力提升
  • 学习pytorch
  • 动态SQL实现原理一-动态SQL的使用
  • MyBatis动态sql标签帮你轻松搞定sql拼接
  • Java课题笔记~ 使用 Spring 的事务注解管理事务(掌握)
  • UML—浅谈常用九种图
  • 算法与数据结构-跳表
  • 微信小程序nodejs+vue+uniapp校运会高校运动会报名管理系统
  • varint原理 - 负数的编码和解码
  • 大学生口才培训需求分析
  • C++:合并集合(并查集)
  • 【LeetCode】数据结构题解(10)[有效的括号]
  • 5G用户逼近7亿,5G发展迈入下半场!
  • 分布式问题
  • 教雅川学缠论06-中枢
  • 如何调教让chatgpt读取自己的数据文件(保姆级图文教程)
  • React Native Camera的使用
  • 【Matlab】Elman神经网络遗传算法(Elman-GA)函数极值寻优——非线性函数求极值
  • @ControllerAdvice注解使用及原理探究 | 京东物流技术团队