贪心、分治

  • 贪心(Greedy)
    • 问题1:最优装载(加勒比海盗)
    • 问题2:零钱兑换
      • 零钱兑换的另一个例子
    • 贪心注意点
    • 问题3:0-1背包
      • 0-1 背包 - 实例
    • 一些习题
  • 分治(Divide And Conquer)
    • 主定理(Master Theorem)
    • 问题1:最大连续子序列和
      • 解法1 – 暴力出奇迹
      • 暴力出奇迹 – 优化
      • 解法2 – 分治
    • 问题2:大数乘法

数据结构与算法笔记:恋上数据结构笔记目录

贪心(Greedy)

贪心策略,也称为贪婪策略

  • 每一步都采取当前状态下最优的选择(局部最优解),从而希望推导出全局最优解

贪心的应用

  • 哈夫曼树
  • 最小生成树算法:Prim、Kruskal
  • 最短路径算法:Dijkstra

问题1:最优装载(加勒比海盗)


贪心策略:每一次都优先选择重量最小的古董

  • ① 选择重量为 2 的古董,剩重量 28
    ② 选择重量为 3 的古董,剩重量 25
    ③ 选择重量为 4 的古董,剩重量 21
    ④ 选择重量为 5 的古董,剩重量 16
    ⑤ 选择重量为 7 的古董,剩重量 9
  • 根据上面的选择,最多能装载 5 个古董
import java.util.Arrays;/*** 有一天,海盗们截获了一艘装满各种各样古董的货船,每一件古董都价值连城,一旦打碎就失去了它的价值* 海盗船的载重量为 W,每件古董的重量为 												

【恋上数据结构】贪心(最优装载、零钱兑换、0-1背包)、分治(最大连续子序列和、大数乘法)相关推荐

  1. 【恋上数据结构】动态规划(找零钱、最大连续子序列和、最长上升子序列、最长公共子序列、最长公共子串、0-1背包)

    动态规划(Dynamic Programming) 练习1:找零钱 找零钱 - 暴力递归 找零钱 - 记忆化搜索 找零钱 - 递推 思考题:输出找零钱的具体方案(具体是用了哪些面值的硬币) 找零钱 - ...

  2. MJ恋上数据结构(第1季 + 第2季)笔记

    文章转载自:https://blog.csdn.net/weixin_43734095/article/details/104847976 恋上数据结构完整笔记(第1季 + 第2季) 前言 数据结构 ...

  3. 2021-10-15 红黑树 概念和平衡操作理解以及与AVL对比分析 恋上数据结构笔记

    文章目录 红黑树的由来 红黑树需要遵守的五大规则 红黑树与4阶B树的相互转换!! 红黑树的插入(12种情况) 红黑树的删除(3大类情况) 红黑树的平衡 以及与AVL树的性能比较 红黑树的由来 红黑树: ...

  4. 基数排序及其思想 C++代码实现及分析 恋上数据结构笔记

    文章目录 复习梗概 算法思想 时间及空间复杂度 基数排序基础版代码 及输出结果 计数排序函数 基数排序函数 可视化输出 另一种思路 完整版代码 复习梗概 思想 如何取数字各个位位数 计数排序保证稳定性 ...

  5. 计数排序及其改进 C++代码实现与分析 恋上数据结构笔记

    文章目录 复习梗概 算法思想 基础思想 改进空间复杂度,改进不能对负数进行排序问题 改进稳定性 计数排序时间空间复杂度 计数排序基础版 代码及输出 计数排序第一次改进版 代码及输出 计数排序终极版 代 ...

  6. 快速排序 C++代码实现及其算法思想及时间复杂度分析及优化 恋上数据结构笔记

    文章目录 复习梗概 算法思想 算法复杂度分析及稳定性 如何优化? 快速排序改进版代码C++ 快速排序个人青春版代码 完整代码 复习梗概 算法思想,别的排序名字直接就能让人联想到它的算法思想,唯独快速排 ...

  7. 归并排序算法 C++实现与时间复杂度(考过)恋上数据结构笔记

    复习梗概 画图,自己整个数组,看代码写步骤,这个对理解归并排序还是很有必要的 合并两个有序数组的merge函数写法 时间复杂度的分析方法!!! 其实我觉得去b站找个动态的步骤分解视频也是不错的复习方法 ...

  8. 插入排序算法 及其二分搜索优化版 C++代码实现 恋上数据结构笔记

    复习梗概 文章目录 复习梗概 插入排序算法思想 插入排序时间复杂度与特性(多少,与什么有关?) 插入排序基础版 插入排序2nd优化版(优化了哪里?) !!!插入排序二分搜索优化版(优化了哪里?如何优化 ...

  9. 堆排序 C++代码实现及思想 排序过程输出 恋上数据结构笔记

    复习梗概 文章目录 复习梗概 什么是堆思想? 堆排序算法怎么来的? 什么是下滤?代码 什么是建堆?代码 堆排序本体 代码及排序过程输出 和时间复杂度 完整代码 什么是堆思想? 最大堆:树形结构,每一个 ...

最新文章

  1. DFS Gym 100553J Jokewithpermutation
  2. 《程序开发心理学》读书笔记(二)
  3. 关于大型asp.net 应用系统的架构 —— 如何做到高性能高可伸缩性[转]
  4. MySQL学习第三章练习题
  5. Pandas时间差(Timedelta)
  6. LINK : fatal error LNK1168
  7. 计算图的可达矩阵MATLAB程序
  8. 阿里云盘——新的屠龙勇士?
  9. 【win10专业版】如何检测声卡是否损坏
  10. Vmware workstation 安装教程
  11. java 日期格式化工具类
  12. 英文论文评审意见_小弟第一篇英文论文审稿意见求助 - 论文投稿 - 小木虫 - 学术 科研 互动社区...
  13. 在DialogFragment的onStop(完全不可见)时调用dismiss退出界面报错解决办法
  14. Vlan是什么?定义,特点超详细解析
  15. 不得不说/永远不回头
  16. plm软件试用测试报告,ANSYS 15.0系列测试报告——FLUENT Meshing 15.0
  17. 基于嵌入式的密码访问的门锁系统
  18. OpenCV学习之路
  19. 东芝原厂授权代理,TC358762,MIPI 转 RGB,高清分辨率,支持墨水屏
  20. 学习笔记8-I2C协议

热门文章

  1. spring cloud中gateway存在的意义是什么?
  2. 你见过最“变态”的CPU散热器是什么样的?
  3. Now, using the touch-screen smartphone in your hand
  4. Now that half a year has passed
  5. python入门——P46魔法方法:描述符(Property的原理)
  6. 计算机网络class5(分层结构、协议、接口、服务)
  7. ssis for循环容器_SSIS Foreach循环与For循环容器
  8. 标准C程序设计七---120
  9. PLSQL 连接Oracle11g (64位)
  10. 鼠标浮动到表格的某行 背景颜色变化[mouseover mouseout 以及mouseenter mouseleave]