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

Leetcode 1049. 最后一块石头的重量 II 动态规划-01背包

原题链接:Leetcode 1049. 最后一块石头的重量 II

在这里插入图片描述

难的不是背包,是怎么把问题转换成背包。。。。

参考题解:一篇文章吃透背包问题!(细致引入+解题模板+例题分析+代码呈现)

class Solution {
public:int lastStoneWeightII(vector<int>& stones) {int sum=0;for(auto x:stones) sum+=x;int target = sum/2;int n=stones.size();// 把题目转换为背包问题:// 原问题:从一堆石头中,每次拿两块重量分别为x,y的石头,计算他们的差值,大于0则将差值加入数组,重复计算,最后计算剩下石头的最小重量// 转换后:把这堆石头分为两堆石头,计算他们的差值,求这两堆石头的最小值// 分析:要让两堆石头的差值最小,每堆中石头的和最好相等,即等于sum/2,或者接近相等// 建模为背包问题:将一堆石头放进最大容量为sum/2的背包,求放进去的石头的最大重量MaxWeight(MaxWeight<=sum/2)// 最终答案:两堆石头的差值 sum-2*MaxWeight// 背包最大容量为sum/2,dp[i][j]表示考虑前i个石头,他们的和小于等于j的最大重量vector<vector<int>> dp(n+1,vector<int>(target+1,0));for(int i=1;i<=n;i++){for(int j=1;j<=target;j++){dp[i][j]=dp[i-1][j];if(j>=stones[i-1]){dp[i][j]=max(dp[i][j],dp[i-1][j-stones[i-1]]+stones[i-1]);}}}int maxweight = dp[n][target];return sum - 2*maxweight;}
};
http://www.dtcms.com/a/352172.html

相关文章:

  • LeetCode-22day:多维动态规划
  • Docker详细学习
  • 税务岗位职场能力解析与提升路径规划
  • 固定资产管理系统核心模块拆解:全流程管理逻辑
  • 如何利用ArcGIS探究环境与生态因子对水体、土壤、大气污染物等影响
  • 【服务器】Apache Superset MCP接入与使用
  • postman使用
  • golang 8函数
  • pytorch_grad_cam 库学习笔记——基类BaseCAM
  • 使用 Docker、Jenkins、Harbor 和 GitLab 构建 CI/CD 流水线
  • Unity:游戏性能优化!之把分散在各个游戏角色GameObject上的脚本修改为在一个脚本中运行。这样做会让游戏运行更高效?
  • Caddy + CoreDNS 深度解析:从功能架构到性能优化实践(下)
  • 【BurpSuite 插件开发】实战篇(十六-终章)性能优化实践:线程管理到正则匹配的全方位提升
  • Python爬虫实战:研究开源的高性能代理池,构建电商数据采集和分析系统
  • STM32物联网项目---ESP8266微信小程序结合OneNET平台MQTT实现STM32单片机远程智能控制---云平台篇(一)
  • 深度学习——神经网络(PyTorch 实现 MNIST 手写数字识别案例)
  • 数据集数量与神经网络参数关系分析
  • Vibe 编程:下一代开发者范式的深度解析
  • 扩展现有的多模块 Starter
  • 2025本地部署overleaf
  • 售价3499美元,英伟达Jetson Thor实现机器人与物理世界的实时智能交互
  • 09-SpringBoot入门案例
  • 嵌入式学习笔记-LINUX系统编程阶段-DAY01脚本
  • 第四章:条件判断
  • VueFlow画布可视化——js技能提升
  • 安全测试、web探测、httpx
  • vue2和vue3的对比
  • Android 属性系统
  • 蓝思科技中报:深耕业务增量,AI硬件打开想象空间
  • Pandas vs Polars Excel 数据加载对比报告