news 2026/5/7 9:40:34

GESP5级C++考试语法知识(十三、贪心算法(三))

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GESP5级C++考试语法知识(十三、贪心算法(三))


🌟第三课:《贪心王国大冒险》

第三章——贪心的极限与陷阱


🏰 一、故事开场:勇士的危机

1、同学们已经掌握了:

  • 海盗船(选小)

  • 排队接水(选快)

  • 活动选择(选结束早)

2、有的同学,是不是很自信地认为:

“我已经学会贪心了!以后每题都可以用!”

3、汉克老师提醒大家:

“⚠️ 小心!贪心不是万能的!”

于是,带大家来到——
💰宝藏山(背包世界)


🎒 二、第一关:宝藏山(贪心失效!)


1、📖 故事背景

有一个背包,容量 = 10

宝物如下:

物品体积价值
A736
B525
C420
D115

2、🎯 目标

👉让总价值最大!



🧠 第一步:让学生自己“贪心”

(1)汉克老师问:

👉 你会怎么选?


(2)🎯 常见学生答案

👉 选性价比最高的(价值 / 体积)


(3)🚫 结果:

选 D(15/1) → 剩 A (36/7) → 还剩2个空间,剩下的装不下了。

👉 总价值 = 15+36 = 51



(4)😈 汉克老师问

👉 如果选 B + C + D 呢?

体积:5 + 4 + 1 = 10
👉 总价值 = 25 + 20 +15 =60



(5)🎉 结论

👉 ❌ 贪心失败了!



💡 三、为什么贪心失败?


1、🌟 核心原因

👉局部最优 ≠ 全局最优


2、🧠 加深理解

👉 “你选了一个看起来条件最好的,但其实组合的结果,更重要!”


3、🪄 对比理解

方法思想
贪心每一步选最好
正确解法看整体组合

4、🪄 这一类问题属于0/1背包问题

将使用动态规划算法来解决,后面课程中,进行详细讲解。


🎒 四、第二关:分数背包(贪心又行了!)


1、📖 故事升级

这次宝物可以:

👉 ✂️切开!


2、🎯 问题

还是刚才的背包问题
👉 但可以装一部分



3、🧠 贪心策略

👉 按价值 / 体积(性价比)排序


4、💡 举例

物品体积价值单位价值
A6305
B5408

👉 优先选 B!



5、🪄 解题步骤

✅ 第一步:计算价值密度

✅ 第二步:排序(从大到小)

✅ 第三步:

  • 能装就全装

  • 不够就装一部分



6、💻 参考程序

#include <iostream> #include <algorithm> using namespace std; struct Node { double w, v; }; bool cmp(Node a, Node b) { return a.v / a.w > b.v / b.w; } int main() { int n, V; cin >> n >> V; Node a[100]; for(int i = 0; i < n; i++) { cin >> a[i].w >> a[i].v; } sort(a, a + n, cmp); double ans = 0; for(int i = 0; i < n; i++) { if(V >= a[i].w) { ans += a[i].v; V -= a[i].w; } else { ans += a[i].v * (V / a[i].w); break; } } cout << ans; }


🧠 五、第三关:0/1背包与分数背包


1、📖 看规则

👉 ❌ 能不能切
👉 ✔ 只能选或不选


2、🎯 问题

👉 最大价值?


3、❗ 关键结论

👉 ❌ 0/1背包不能用贪心!

👉 ✅️ 分数背包可以用贪心



4、💣 0/1背包经典错误

👉 用“价值最大”贪心
👉 用“性价比最高”贪心

👉 都可能错!


5、💡 正确方向

👉 需要考虑所有组合

👉 这就是👇

🌟动态规划(下一阶段内容)



🧠 六、本课总结


1、🌟 贪心适用条件

👉局部最优 = 全局最优



2、🌟 能否贪心

问题能否贪心原因
海盗船选小最优
分数背包可切
0/1背包组合更重要


3、🌟 判断口诀

👉 能不能拆?
👉 会不会影响后面?
👉 选一个会不会后悔?



💣 七、容易犯的错误


❌ 错误1:看到极值问题就贪心

👉 错!



❌ 错误2:不会区分两种背包

类型特点
分数背包可切
0/1背包不可切


❌ 错误3:迷信“贪心一定正确”

👉 很多题都会翻车!



❌ 错误4:不做对比验证

👉 一定要试反例!



🎮 八、课堂终极挑战


🎯 挑战1

容量 = 10

物品:

(6,40) (5,29) (5,29)

👉 能不能贪心?



🎯 挑战2

👉 如果可以切呢?



🎯 挑战3(思考)

👉 为什么“能切”就可以贪心?



🎉 九、本课结尾

同学们终于明白了:

🌟 贪心不是“万能钥匙”
🌟 而是一种“特殊武器”


汉克老师说:

“真正的高手,不是会用一种方法,而是知道——什么时候用哪种方法!”


学生学会了:

✅ 会用贪心
✅ 会验证贪心策略
✅ 会判断能不能用贪心 ❗(很重要)



版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/7 9:39:39

UCNPs-OA/PAA/Fe3O4,上转换纳米颗粒表面修饰与复合体系差异分析

中英文名称&#xff1a; UCNPs-OA&#xff0c;油酸稳定化上转换纳米颗粒 UCNPs-PAA&#xff0c;聚丙烯酸修饰上转换纳米颗粒 UCNPs-Fe3O4&#xff0c;四氧化三铁复合上转换纳米颗粒 一、UCNPs-OA&#xff0c;油酸稳定化上转换纳米颗粒 材料特点 UCNPs-OA通常是以油酸&#xff0…

作者头像 李华
网站建设 2026/5/7 9:38:33

别再只会setStyleSheet了!Qt实现背景透明的5种方法实测与避坑指南

别再只会setStyleSheet了&#xff01;Qt实现背景透明的5种方法实测与避坑指南 在开发现代桌面应用时&#xff0c;透明效果已经成为提升用户体验的重要设计元素。无论是悬浮工具窗口、HUD界面还是需要融入系统环境的特殊应用&#xff0c;背景透明都是实现这些效果的关键技术。作…

作者头像 李华
网站建设 2026/5/7 9:37:28

TensorFlow模型快速部署:基于Gradio的AI演示界面构建指南

1. 项目概述&#xff1a;当TensorFlow遇上Gradio&#xff0c;一个快速构建AI演示界面的利器如果你正在用TensorFlow捣鼓机器学习模型&#xff0c;并且已经厌倦了在Jupyter Notebook里反复运行单元格&#xff0c;或者想给非技术背景的同事、朋友直观地展示你的模型效果&#xff…

作者头像 李华
网站建设 2026/5/7 9:36:43

ComfyUI Manager终极指南:AI绘画插件的智能管家

ComfyUI Manager终极指南&#xff1a;AI绘画插件的智能管家 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various custom node…

作者头像 李华
网站建设 2026/5/7 9:28:13

WatermarkRemover实战方案:AI智能清除视频水印的3步操作手册

WatermarkRemover实战方案&#xff1a;AI智能清除视频水印的3步操作手册 【免费下载链接】WatermarkRemover 批量去除视频中位置固定的水印 项目地址: https://gitcode.com/gh_mirrors/wa/WatermarkRemover 你是否曾为视频中的平台水印而苦恼&#xff1f;精心制作的视频…

作者头像 李华