代码随想录算法训练营第四十五天|1049. 最后一块石头的重量 II、494. 目标和、474.一和零

代码随想录算法训练营第四十五天

1049. 最后一块石头的重量 II

题目链接:1049. 最后一块石头的重量 II
将所有石头分成2组,两组的重量尽可能相等,差值最小。
计算石头总重,再除以2就是目标重量,求要达到该重量能装的石头的最大价值(重量)。

  1. 确定dp数组以及下标的含义:j为背包的最大容量,dp[j]达到j重量能装的石头的最大价值(重量)
  2. 确定递推公式:dp[j] = max(dp[j],dp[j-nums[i]]+nums[i])
  3. dp数组如何初始化:容量为0,价值(重量)为0。dp[0] = 0;
  4. 确定遍历顺序:从大到小遍历
  5. 打印dp数组。
class Solution {
public:int lastStoneWeightII(vector<int>& stones) {int sum = 0;for (int& num : stones) {sum += num;}int target = sum / 2;vector<int> dp(target + 1, 0);dp[0] = 0;for (int i = 0; i < stones.size(); i++) {for (int j = target; j >= stones[i]; j--) {dp[j] = max(dp[j], dp[j - stones[i]] + stones[i]);}}int result = sum - dp[target] - dp[target];return result;}
};

494. 目标和

题目链接:494. 目标和
将所有数字分成2组P,N,P组前面是+,N组前面是-。数组内所有元素的和sum=P+N,target=P-N。P=(sum+target)/2。问题转换为数组内满足和为P有多少种组合。

  1. 确定dp数组以及下标的含义:j为背包的最大容量,dp[j]当容量为j有几种组合方式
  2. 确定递推公式:dp[j]=dp[j]+dp[j-nums[i]],不放当前数字组成目标值的种类+必须放当前数字组成目标值的种类(为了保证一定放这个值,就要把需要的容量腾出来)
  3. dp数组如何初始化:容量为0,有一种放法,dp[0] = 1;
  4. 确定遍历顺序:从大到小遍历
  5. 打印dp数组。
class Solution {
public:int findTargetSumWays(vector<int>& nums, int target) {int sum = 0;for (int& num : nums) {sum += num;}if ((sum + target) % 2 == 1 || sum < target)//这两种情况无解,返回0return 0;int s =(sum + target) / 2;if(s<0)return 0;//这种情况无解返回0vector<int> dp(s+1,0);dp[0]=1;for(int &num:nums){for(int j = s;j>=num;j--){dp[j]+=dp[j-num];}}return dp[s];}
};

474.一和零

题目链接:474.一和零

  1. 确定dp数组以及下标的含义:dp[i][j]表示有i个0,j个1,的背包,装满后的最大价值(每个字符串的价值为1,装满时最大字符串个数就等于最大价值)
  2. 确定递推公式:dp[i][j] = max(dp[i][j], dp[i - x_0][j - y_1] + 1);不换当前字符串的价值和换上当前字符串的价值中取较大。
  3. dp数组如何初始化:容量为0,价值为0。dp[0]=0
  4. 确定遍历顺序:从大到小遍历
  5. 打印dp数组。
class Solution {
public:int findMaxForm(vector<string>& strs, int m, int n) {vector<vector<int>> dp(m + 1, vector<int>(n + 1, 0));for (auto& str : strs) {int x_0 = 0;int y_1 = 0;for (auto& c : str) {if (c == '0')x_0++;elsey_1++;}for (int i = m; i >= x_0; i--) {for (int j = n; j >= y_1; j--) {dp[i][j] = max(dp[i][j], dp[i - x_0][j - y_1] + 1);}}}return dp[m][n];}
};

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

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

相关文章

java —— Comparable 接口和 Comparator 比较器

一、Comparable 接口 当一个自定义的类&#xff0c;比如 Student 需要存储在 TreeSet 集合当中&#xff0c;可以为 Student 实现 Comparable 接口。因为 TreeSet 集合内部的元素是自然排序&#xff0c;而系统根本不知道自定义的类如何排序&#xff0c;所以需要我们人为地定义排…

升级笔记本

笔记本型号参数&#xff1a;Acer V5-573G CPU:I5 4200U 1.6GHz 最高2.6GHz 双核四线程 内存&#xff1a;4G 1600M DDR3L SO-DIMM 显卡&#xff1a;独立显卡NVIDIA GeForce GT 750M 硬盘&#xff1a;1T 5400转 屏幕&#xff1a;15.6英寸 1920*1080 【Acer V5-573G-54204G1…

WIFI 万[néng]钥匙 v5.0.10/v4.9.80 SVIP版!

WiFi Master Key v5.0.10/v4.9.80 WIFI万[Nng]钥匙APP是一款专业的网络连接工具&#xff0c;设计宗旨在于为用户提供方便快捷的WiFi接入方案。本应用集成了覆盖全国的大量免费WiFi热点信息&#xff0c;确保用户能够在不同地区快速而稳定地连接到互联网。此外&#xff0c;该应用…

atcoder350,351,352,353,354,355期部分题解

声明&#xff1a;有些题感觉已经说到很明白了&#xff0c;就先不写代码了&#xff0c;有空会补上 目录 350D: new friend 350E: toward 0 351D:Grid and Magnet 352D:permutation subsequence 353C: sigma problem 353D: another sigma problem 354C: atcoder magics …

Java面经(附源码分析)

String、StringBuffer和StringBuilder的区别&#xff1a; 首先String内部的字符数组是使用final修饰&#xff0c;无法修改&#xff0c;每次修改其实是创建一个新的String对象&#xff0c;为了高效字符串操作&#xff0c;引入了StringBuffer和StringBuilder。但StringBuffer的线…

神经网络与深度学习——第6章 循环神经网络

本文讨论的内容参考自《神经网络与深度学习》https://nndl.github.io/ 第6章 循环神经网络 给网络增加记忆能力 延时神经网络 有外部输入的非线性自回归模型 循环神经网络 简单循环网络 循环神经网络的计算能力 循环神经网络的通用近似定理 图灵完备 应用到机器学习 序列到类…

python实现描述统计

数据基础情况 import numpy as np import pandas as pd import matplotlib.pyplot as pyplot pd.options.display.max_rows 10##最多输出10行数据 data_url https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-ST0151EN-SkillsN…

[C/C++] -- Libcurl开发

libcurl 是一个功能强大的 C 语言库&#xff0c;用于实现各种网络传输协议的客户端功能。它是 Curl 工具的核心&#xff0c;并提供了一个简单、灵活、高效的 API&#xff0c;允许开发人员在他们的应用程序中轻松地执行网络操作。 以下是 libcurl 的一些主要特点和功能&#xf…

数据整理操作及众所周知【数据分析】

各位大佬好 &#xff0c;这里是阿川的博客&#xff0c;祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 Python 初阶 Python–语言基础与由来介绍 Python–…

计算机组成原理·存储系统疑点归纳

组原这门课有点学得不是很懂&#xff0c;现在快考试了&#xff0c;挑几个做错了的题分析、记录一下。 N o . 1 \mathit{No}.1 No.1  x x x、 y y y 为定点整数&#xff0c;其格式为 1 1 1 位符号位、 n n n 位数值位&#xff0c;若采用补码一位乘法实现乘法运算&#xff0c;则…

[AI OpenAI] 推出ChatGPT Edu

一种负担得起的解决方案&#xff0c;帮助大学将AI负责任地引入校园。 我们宣布推出ChatGPT Edu&#xff0c;这是一个专为大学设计的ChatGPT版本&#xff0c;旨在负责任地向学生、教职员工、研究人员和校园运营部署AI。ChatGPT Edu由GPT-4o提供支持&#xff0c;能够跨文本和视觉…

【5】MySQL数据库备份-XtraBackup - 全量备份

MySQL数据库备份-XtraBackup-全量备份 前言环境版本 安装部署下载RPM 包二进制包 安装卸载 场景分析全量备份 | 恢复备份恢复综合 增量备份 | 恢复部分备份 | 恢复 前言 关于数据库备份的一些常见术语、工具等&#xff0c;可见《MySQL数据库-备份》章节&#xff0c;当前不再重…

SpringBoot 单元测试 指定 环境

如上图所示&#xff0c;在配置窗口中添加--spring.profiles.activedev&#xff0c;就可以了。

面试题:SpringBoot启动流程

具体步骤 新建一个Spring应用程序 (new springApplication())&#xff1a; 确认web应用的类型加载ApplicationContextInitializer加载ApplicationListener记录主启动类 运行应用程序&#xff08;.run&#xff09;&#xff1a; 准备环境对象Environment&#xff0c;用于加载…

自监督表示学习和神经音频合成实现语音修复

关键词&#xff1a;语音修复、自监督模型、语音合成、语音增强、神经声码器 语音和/或音频修复的目标是增强局部受损的语音和/或音频信号。早期的工作基于信号处理技术&#xff0c;例如线性预测编码、正弦波建模或图模型。最近&#xff0c;语音/音频修复开始使用深度神经网络&a…

react antd table表格如何获取当前行id

组件库上都有详细的介绍&#xff0c;有自带的一些属性&#xff01;

【EFK日志系统】docker一键部署filebeat、metricbeat

docker一键部署filebeat、metricbeat filebeat部署创建配置文件一键启动修改配置文件查验信息 metricbeat部署创建配置文件一键启动修改配置文件查验信息 上两篇文章写了搭建部署es集群和部署kibana 这篇写一键部署filebeat和metricbeat收集工具 规划服务器是 es01:172.23.16…

PyQt5创建与MySQL数据库集成的应用程序

最近&#xff0c;对之前的mysql管理系统进行了更新升级&#xff0c;制作了一版关于车牌的管理系统&#xff01; &#xff08;1&#xff09;实现了对车牌和用户基本信息的增删改查的功能 &#xff01; &#xff08;2&#xff09;加入了对数据库的刷新和状态显示功能 &#xff…

反向传播算法的详细推导

反向传播算法的详细推导

2024年江苏省大学生程序设计竞赛

Problem I. 整数反应 题意&#xff1a; 有n个整数&#xff0c;从左到右编号1到n&#xff0c;他们有0和1两种颜色&#xff0c;每个整数有且只有一种颜色&#xff0c;将它们按照编号从1到n的顺序依次放入S1&#xff0c;每当一个新整数x放入S1&#xff0c;必须选择与其不同颜色的…