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

第九章 动态规划part04

2026.03.21 03.09 第四十一天

1049 最后一块石头的重量||

和上一题的思想一样

关键是想到把问题转化为把石头尽可能分成重量近似,数量相同的两堆,然后求重量差。

class Solution {
public:int lastStoneWeightII(vector<int>& stones) {int weightSum = 0;int weight = 0;for(int& i : stones) weightSum += i;weight = weightSum / 2;vector<int> dp(weight + 1, 0);for(int i = 0; i < stones.size(); i++) {for(int j = weight; j >= stones[i]; j--) {dp[j] = max(dp[j], dp[j - stones[i]] + stones[i]);}}return abs(weightSum - 2 * dp[dp.size() - 1]);}
};

494 目标和

相比上一题难度更甚,需要重新推导递推公式。

首先需要想明白目标和怎样转化成01背包问题,也就是如下思路:

本题要如何使表达式结果为target,

既然为target,那么就一定有 left组合 - right组合 = target。

left + right = sum,而sum是固定的。right = sum - left

left - (sum - left) = target 推导出 left = (target + sum)/2 。

target是固定的,sum是固定的,left就可以求出来。

此时问题就是在集合nums中找出和为left的组合。

进而利用递推公式和01背包套路解决问题。

一维数组内层循环中的判断调节保证了数组不会越界,没有更改的数值本来应该更改为上一层i的值,然而因为是原地操作,本身存储的数字就是上一层的数字,所以不用更改。

本题要如何使表达式结果为target,既然为target,那么就一定有 left组合 - right组合 = target。left + right = sum,而sum是固定的。right = sum - leftleft - (sum - left) = target 推导出 left = (target + sum)/2 。target是固定的,sum是固定的,left就可以求出来。此时问题就是在集合nums中找出和为left的组合。

474 一和零

代码很简短,过程很心酸~

这个的背包从原来的一维变成了两个维度,因此代码结构发生了很大变化,原地操作也需要上二维的dp数组。

并且对每个字符串进行处理时(相当于遍历原来的每个物品时),需要先统计每个字符串(物品)的特性也就是0和1的数量,而后使用递推式,从后向前处理,
画一遍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(string str : strs) {int oneNum = 0;int zeroNum = 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];}
};
http://www.jsqmd.com/news/513109/

相关文章:

  • 终极指南:9种字重的Outfit几何无衬线字体完全免费商用方案
  • 从零开始:手把手教你用VSCode设计家乡旅游网页(含JS特效)
  • ESP32 Bootloader分区表实战:从创建到读写完整流程
  • Ubuntu系统下ComfyUI安装全攻略:从环境配置到模型加载(附常见错误解决)
  • OpenClaw可视化监控:GLM-4.7-Flash任务执行看板搭建
  • Qwen3-32B-Chat部署案例:某金融科技公司用该镜像构建合规性审查AI助手
  • Janus-Pro-7B开源模型:DeepSeek Janus-Pro-7B HuggingFace部署
  • 数字转中文金额大写输出
  • 别再给Everyone权限了!安全配置IIS应用程序池访问Temporary ASP.NET Files的正确姿势
  • 保姆级教程:零基础在Ubuntu上部署Qwen3-4B,打造你的专属AI写作助手
  • 升腾国产化云电脑服务器部署实战:从零搭建到管理平台配置
  • 开源软件版本迁移兼容性问题完全解决方案:从诊断到预防
  • 红帽RHEL7下Nvidia显卡驱动安装全攻略:从禁用nouveau到rpm包安装
  • AI开发新范式:TRAE SOLO与cpolar内网穿透的协同实战
  • 阿里Live Avatar数字人应用:快速制作企业宣传、在线教育的虚拟人视频
  • Gemma-3 Pixel Studio惊艳案例:复古像素UI下完成复杂图表理解+数据趋势总结+可视化建议
  • comsol模拟锌离子电池锌负极电场模源文件与详细教程(适合初学者) 资料包含电场模型制作详细...
  • Wan2.1 VAE赋能微信小程序:云端图像风格迁移应用开发
  • 2026同城搬家公司怎么选?5家常见搬家平台对比,省心避坑指南 - 速递信息
  • Z-Image-ComfyUI多用户部署方案:端口映射与资源隔离实战
  • Cesium路径导航避坑指南:如何解决模型贴地和方向调整的常见问题
  • Qwen2.5-VL-7B-Instruct快速部署:基于GPTQ的低显存占用多模态模型落地方案
  • 次元画室自动化工作流:结合Git进行版本管理与协作
  • 2026全自动/进口/实验室洗瓶机十大品牌深度盘点:技术实测与厂家实力排名 - 品牌推荐大师1
  • Qwen-Image镜像作品分享:100+张真实场景图的Qwen-VL理解结果可视化展示
  • Elsevier vs Springer:LaTeX算法环境配置差异全解析(附常见报错修复)
  • BGE-Large-Zh部署教程:Docker Compose编排多实例语义服务集群
  • 如何通过.NET Windows Desktop Runtime构建跨版本兼容的桌面应用部署解决方案
  • GLM-Image惊艳效果展示:幻想山景、赛博武士等高清风格化作品实录
  • 彩石瓦十大品牌:阿鲁山累计销售额 30 亿,全球亿万用户之选 - 速递信息