动态规划专练:卡码网第52题-携带研究材料
1.本题是第一次遇到完全背包的动态规划问题与01背包问题相比最大的不同就是每一个物品的数量从1变为了无穷。完全背包问题可以使用二维dp数组更加直观易懂。行为物品列为最大重量元素值为最大价值。递推公式的结构与01背包的一样不同点在于如果选择放该物品要从本行寻找减去该物品重量的元素值而不是去上一行寻找原因在于物品没有数量限制剩余的空间不是从“没考虑当前物品”的上一层省出来的而是从“可能已经放过当前物品”的本层省出来的。递推公式为dp[i][j] fmax(dp[i - 1][j], dp[i][j - weight[i]] val[i])。2.基于以上思想可写出完整代码如下1. #include stdio.h 2. #include math.h 3. #include string.h 4. 5. int main(){ 6. // num物品数量max_weight背包最大承重 7. int num, max_weight; 8. scanf(%d %d, num, max_weight); 9. 10. // weight[i]第i件物品重量val[i]第i件物品价值 11. int weight[num], val[num]; 12. memset(weight, 0, sizeof(weight)); 13. memset(val, 0, sizeof(val)); 14. for (int i 0; i num; i){ 15. scanf(%d %d, weight[i], val[i]); 16. } 17. 18. // dp[i][j]前i件物品背包容量j时的最大价值完全背包二维数组 19. int dp[num][max_weight 1]; 20. for (int i 0; i num; i){ 21. memset(dp[i], 0, sizeof(dp[i])); 22. } 23. // 初始化第一件物品完全背包同一物品可多次选取 24. for (int i weight[0]; i max_weight; i){ 25. dp[0][i] dp[0][i - weight[0]] val[0]; 26. } 27. 28. // 遍历剩余物品 29. for (int i 1; i num; i){ 30. // 从小到大遍历容量允许重复选取当前物品完全背包核心 31. for (int j 0; j max_weight; j){ 32. if (j weight[i]){ 33. // 装不下继承前i-1件的最优解 34. dp[i][j] dp[i - 1][j]; 35. } else { 36. // 二选一不选当前物品 / 重复选当前物品 37. dp[i][j] fmax(dp[i - 1][j], dp[i][j - weight[i]] val[i]); 38. } 39. } 40. } 41. 42. // 输出全部物品、背包满承重的最大价值 43. printf(%d, dp[num - 1][max_weight]); 44. 45. return 0; 46. }该算法时间复杂度和空间复杂度均为O(num * max_weight)。3.完全背包问题同样可以使用一维动态dp数组与01背包相比唯一不同点在于完全背包的内层循环是正序而01背包是逆序。01背包逆序是因为物品数量只有1个需要防止物品被多次选取而完全背包的物品数量是无限个所以需要正序来保证物品能被多次选取。相当于物品数量的特点决定了使用哪种遍历顺序。4.基于以上思想可写出完整代码如下1. #include stdio.h 2. #include math.h 3. #include string.h 4. 5. int main(){ 6. // num物品种类数max_weight背包最大载重 7. int num, max_weight; 8. scanf(%d %d, num, max_weight); 9. 10. // weight数组存每种物品重量val数组存每种物品价值 11. int weight[num], val[num]; 12. memset(weight, 0, sizeof(weight)); 13. memset(val, 0, sizeof(val)); 14. for (int i 0; i num; i){ 15. scanf(%d %d, weight[i], val[i]); 16. } 17. 18. // dp[j]容量为j的背包可装入的最大价值 19. int dp[max_weight 1]; 20. memset(dp, 0, sizeof(dp)); 21. 22. // 完全背包一维优化物品可无限取用 23. for (int i 0; i num; i){ 24. // 容量正序遍历允许重复选取当前物品 25. for (int j weight[i]; j max_weight; j){ 26. // 不选当前物品dp[j] / 选当前物品dp[j-weight[i]]val[i]取更大值 27. dp[j] fmax(dp[j], dp[j - weight[i]] val[i]); 28. } 29. } 30. 31. // 输出满载背包的最大价值 32. printf(%d, dp[max_weight]); 33. 34. return 0; 35. }该算法时间复杂度为O(num * max_weight)空间复杂度均O(max_weight)。5.在使用一维动态dp数组时对于01背包问题由于最后两层for循环的的内层循环时逆序的所以两层for循环不能换位置否则会引起逻辑错乱而完全背包问题因为两层都是正序的两层for循环可以互换位置。

相关新闻

XSS实战:绕过过滤的payload变形技巧与防御策略

XSS实战:绕过过滤的payload变形技巧与防御策略

1. 项目概述&#xff1a;从“能弹窗”到“能实战”的跨越 很多刚接触Web安全的朋友&#xff0c;对XSS&#xff08;跨站脚本攻击&#xff09;的理解可能还停留在“在输入框里敲个 <script>alert(1)</script> &#xff0c;然后看能不能弹窗”的阶段。一旦弹窗成功&…

2026/10/13 2:12:17 阅读更多 →
Java与Python中特殊字符处理实战:编码、存储与传输

Java与Python中特殊字符处理实战:编码、存储与传输

在实际开发中&#xff0c;我们经常需要处理一些来自外部系统、用户输入或网络请求的字符串数据&#xff0c;这些数据可能包含一些非标准的、特殊的或难以直接处理的字符。例如&#xff0c;一个游戏角色或动漫角色的名字&#xff0c;如“芙兰朵露斯卡雷霆”&#xff0c;其中包含…

2026/10/4 15:29:03 阅读更多 →
SpringBoot整合MinIO:从基础配置到生产级对象存储实践

SpringBoot整合MinIO:从基础配置到生产级对象存储实践

1. 为什么说“看这一篇就够了”&#xff1a;从需求到选型的深度思考 如果你正在为一个Java项目寻找一个可靠、高性能且易于集成的对象存储方案&#xff0c;并且这个项目恰好基于SpringBoot&#xff0c;那么“SpringBoot整合MinIO”这个组合大概率已经进入了你的视野。网上相关的…

2026/10/11 4:48:13 阅读更多 →

最新新闻

Fusion 脚本 API 解析:GL3DViewer 类与 3D 视图的居中与适配控制(AutoSubs 项目实战参考)

Fusion 脚本 API 解析:GL3DViewer 类与 3D 视图的居中与适配控制(AutoSubs 项目实战参考)

人工智能AI 应用语音音频本地部署桌面应用 【免费下载链接】auto-subs On-device subtitle generation that connects directly to DaVinci Resolve, Premiere, and After Effects. 项目地址&#xff1a; https://gitcode.com/gh_mirrors/au/auto-subs 点击查看 免费下载 本文…

2026/10/13 2:11:25 阅读更多 →
3 步命令搞定抖音封面下载:从单条到批量的本地原图

3 步命令搞定抖音封面下载:从单条到批量的本地原图

3 步命令搞定抖音封面下载&#xff1a;从单条到批量的本地原图 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support.…

2026/10/13 2:11:25 阅读更多 →
AI图像识别微信小程序demo实战:云函数集成第三方接口全流程

AI图像识别微信小程序demo实战:云函数集成第三方接口全流程

简介&#xff1a;人工智能实战微信小程序演示包是一份面向微信小程序初学者的实战工程&#xff0c;围绕人工智能主题展示多种交互场景。资源共59个文件&#xff0c;包含12个逻辑脚本、7个样式文件、5个页面结构、5个配置文件以及23张图片素材&#xff0c;还附带动效、封面图及说…

2026/10/13 2:11:25 阅读更多 →
GDAL 格网化(Gridding)实战指南:从散点插值到数据度量

GDAL 格网化(Gridding)实战指南:从散点插值到数据度量

GIS遥感数据工程 【免费下载链接】gdal GDAL is an open source MIT licensed translator library for raster and vector geospatial data formats. 项目地址&#xff1a; https://gitcode.com/gh_mirrors/gd/gdal 点击查看 免费下载 导读 本文围绕 GDAL 官方的格网化教程&a…

2026/10/13 2:11:25 阅读更多 →
Matomo 官方 Docker 镜像部署实战:容器化运行、数据持久化、环境变量与日志导入

Matomo 官方 Docker 镜像部署实战:容器化运行、数据持久化、环境变量与日志导入

文档 【免费下载链接】docs Documentation for Docker Official Images in docker-library 项目地址&#xff1a; https://gitcode.com/gh_mirrors/docs/docs 点击查看 免费下载 Matomo&#xff08;原名 Piwik&#xff09;是领先的开源 Web 分析平台&#xff0c;其 Docker 官方…

2026/10/13 2:11:25 阅读更多 →
VoiceStudio 本地训练实战:几小时音频炼出专属音色 TTS 模型

VoiceStudio 本地训练实战:几小时音频炼出专属音色 TTS 模型

VoiceStudio 本地训练实战&#xff1a;几小时音频炼出专属音色 TTS 模型 【免费下载链接】VoiceStudio VoiceStudio is the open-source, fully-local ElevenLabs alternative — voice cloning, voice design, video dubbing, dictation, transcription & audiobook creat…

2026/10/13 2:10:25 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目&#xff0c;我最大的感受是&#xff0c;大部分坑不是出在技术前沿&#xff0c;而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节&#xff0c;最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了&#xff0c;很难不碰到舵机控制这道坎。做智能小车要转方向&#xff0c;做机械臂要抬关节&#xff0c;做云台要偏航俯仰&#xff0c;背后都是同一个东西在干活&#xff1a;舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”&#xff1f;——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台&#xff1f;或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜&#xff1f;又或者&#xff0c;在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介&#xff1a;基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码&#xff0c;面向计算机相关专业课程设计与期末大作业学生&#xff0c;以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程&#xff0c;…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程&#xff1a;键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化&#xff0c;十个新手有八个栽在"往输入框里填东西"这件事上&#xff1a;要么填不进去&#xff0c;要么填了一半&#xff0c;要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →