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

31. 1049. 最后一块石头的重量 II, 494.目标和,474.一和零

class Solution {
public:int lastStoneWeightII(vector<int>& stones) {int sum = 0;for(int stone : stones) sum += stone;int bagSize = sum /2;vector<int> dp(bagSize + 1, 0);for(int i = 0; i < stones.size(); i++){ //遍历物品for(int j = bagSize; j >= stones[i]; j--){ //遍历背包dp[j] = max(dp[j], dp[j - stones[i]] + stones[i]);}}return sum - 2*dp[bagSize];}
};

class Solution {
public:int findTargetSumWays(vector<int>& nums, int target) {int ans = 0, sum = 0;for(int num : nums) sum += num;if((sum - target) % 2 != 0 || abs(sum) < abs(target)) return 0;int bagSize = (sum - target)/2;// dp[j] 表示:填满j(包括j)这么大容积的包,有dp[j]种方法vector<int> dp(bagSize + 1, 0);dp[0] = 1;for(int i = 0; i < nums.size(); i++){for(int j = bagSize; j >= nums[i]; j--){dp[j] += dp[j - nums[i]]; //注意理解递推公式!!!!!!}  }return dp[bagSize];}
};

本题中strs 数组里的元素就是物品,每个物品都是一个!而m 和 n相当于是一个背包,两个维度的背包 注意理解题目中最大子集长度的含义!!!!!!

class Solution {
public:int findMaxForm(vector<string>& strs, int m, int n) {// dp[i][j]:最多有i个0和j个1的strs的最大子集的大小为dp[i][j]。vector<vector<int>> dp(m + 1, vector<int>(n + 1, 0)); //默认初始化0for(string str : strs){ //遍历物品int zeroNum = 0, oneNum= 0;for(char c : str){if(c == '0') zeroNum++;else oneNum++;}for(int i = m; i >= zeroNum; i--){ //遍历背包容量且从后向前遍历!for(int j = n; j >= oneNum; j--){dp[i][j] = max(dp[i][j], dp[i - zeroNum][j - oneNum] + 1);}}}return dp[m][n];}
};

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 问题清除指南|Dell OptiPlex 7070 升级 win11 开启 TPM 2.0 教程
  • c#的几种通信
  • MybatisPlus 一些技巧
  • 透明加密软件哪个好?这5款好用的加密软件尽在你眼前!
  • InspireFace-商用级的跨平台开源人脸分析SDK
  • Spring框架:核心概念与Spring Boot微服务开发指南
  • 地理信息科学在交通规划中的应用:GIS绘制智慧出行新蓝图
  • 【益起童行】为“来自星星的孩子”点亮希望之光
  • 【LeetCode】有效的数独
  • Python考前复习
  • 微信小程序:rpx详解,使用 tailwindcss最佳方案rem转rpx
  • 一文1500字从0到1搭建 Jenkins 自动化测试平台
  • DDOS 攻击原理
  • ARM功耗管理之多核处理器启动
  • LLM之RAG实战(四十一)| 使用LLamaIndex和Gemini构建高级搜索引擎
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • IndexedDB
  • Invalidate和postInvalidate的区别
  • JavaScript 基本功--面试宝典
  • JavaScript创建对象的四种方式
  • leetcode讲解--894. All Possible Full Binary Trees
  • Mac转Windows的拯救指南
  • Node项目之评分系统(二)- 数据库设计
  • PHP面试之三:MySQL数据库
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • Vue ES6 Jade Scss Webpack Gulp
  • Vue官网教程学习过程中值得记录的一些事情
  • yii2权限控制rbac之rule详细讲解
  • 编写高质量JavaScript代码之并发
  • 从0到1:PostCSS 插件开发最佳实践
  • 构建二叉树进行数值数组的去重及优化
  • 正则与JS中的正则
  • gunicorn工作原理
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​数据结构之初始二叉树(3)
  • ​学习笔记——动态路由——IS-IS中间系统到中间系统(报文/TLV)​
  • # C++之functional库用法整理
  • # 达梦数据库知识点
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #、%和$符号在OGNL表达式中经常出现
  • #考研#计算机文化知识1(局域网及网络互联)
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (9)STL算法之逆转旋转
  • (C语言)fread与fwrite详解
  • (javascript)再说document.body.scrollTop的使用问题
  • (pojstep1.1.2)2654(直叙式模拟)
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (四)模仿学习-完成后台管理页面查询
  • (限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!
  • (一)模式识别——基于SVM的道路分割实验(附资源)
  • (一一四)第九章编程练习
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)