什么是贪心算法?

菜园前端
• 阅读 441

原文链接:https://note.noxussj.top/?source=helloworld


什么是贪心算法?

贪心算法是算法设计的一种方法。期盼通过每个阶段的局部最优选择,从而达到全局的最优。但结果不一定是最优的。

基础案例

场景一

零钱兑换

现有硬币 1 元、2 元、5 元,需要用最少的硬币数量凑够 11 元。

利用贪心算法实现,优先考虑最好的结果就是面值为 5 元的硬币,11 = 5 + 5 + 1,一共使用了三枚硬币。

现有硬币 1 元、3 元、4 元,需要用最少的硬币数量凑够 6 元。

利用贪心算法实现,优先考虑最好的结果就是面值为 4 元的硬币,6 = 4 + 1 + 1,一共用了三枚硬币,虽然结果是对的,但是并不是最优的,因为用两枚 3 元硬币才是最优。

点赞
收藏
评论区
推荐文章
Kubrnete Kubrnete
3年前
基于活动选择问题的贪心算法
目录问题描述:(问题描述%3A)输入格式(输入格式)输出格式(输出格式)算法描述(算法描述与分析)算法分析(算法分析)算法图示(图解)问题描述:Coda从0时刻开始观看直播,到t时刻结束。一共有n场直播可被选择,已知所有直播场次的起止时间和主播名称,其中第i场直播从ai时刻开始,
九路 九路
4年前
6 手写Java LinkedHashMap 核心源码
概述LinkedHashMap是Java中常用的数据结构之一,安卓中的LruCache缓存,底层使用的就是LinkedHashMap,LRU(LeastRecentlyUsed)算法,即最近最少使用算法,核心思想就是当缓存满时,会优先淘汰那些近期最少使用的缓存对象LruCache的缓存算法LruCache采用的缓存算法为LRU(LeastRe
Wesley13 Wesley13
3年前
Java位运算实现加减乘除
一、加法ab举例实现:13922139不考虑进位结果为12只考虑进位结果为10和刚好是22。13二进制为1101,9二进制为1001。不考虑进位结果为0100。算式为a^b只考虑进位结果为10010。算式为(a&b)<<1然后它俩继续进行运算,直到进位为0。算法实现:1
Easter79 Easter79
3年前
TiDB Pre
8月30日,TiDB发布PreGA版。该版本对MySQL兼容性、SQL优化器、系统稳定性、性能做了大量的工作。TiDB:SQL查询优化器调整代价模型优化索引选择,支持不同类型字段比较的索引选择支持基于贪心算法的JoinReorder
Stella981 Stella981
3年前
Codeforces 1208F Bits And Pieces 位运算 + 贪心 + dp
题意:给你一个序列a,问a\i\^(a\j\&a\k\)的最大值,其中i<j<k。思路:我们考虑对于每个a\i\求出它的最优解。因为是异或运算,所以我们从高位向低位枚举,如果这一位a\i\是0,我们就在a\i\的右边找两个位置让它们按位与起来这位是1。那么,我们贪心的保留可以通过按位与凑出某个二进制数的最靠右的两
Stella981 Stella981
3年前
LeetCode 226场周赛题解
❝【GiantPandaCV导语】这是LeetCode第226场周赛题解,本周考察的知识点有枚举,贪心,前缀和,Manacher回文算法,动态规划,图论等。❞比赛链接https://leetcodecn.com/contest/weeklycontest226/最终Rank:23
Stella981 Stella981
3年前
Leetcode 11
11\.盛水的容器left,right双指针,中等偏简单难度12\.整数转罗马数字(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fleetcodecn.com%2Fproblems%2Fintegertoroman%2F)贪心算法,罗马字母含特殊
菜园前端 菜园前端
1年前
什么是分而治之?
原文链接:什么是分而治之?在我们前面有学习过一系列数据结构、以及相关的一些算法,包含排序、搜索算法。而本次学习的分而治之它不是数据结构,也不是一种算法,而是算法设计中的一种方法,可以理解为是一种思想。我们可以利用这种思想去设计很多种算法。分而治之是将一个问
拆解雪花算法生成规则 | 京东物流技术团队
雪花算法(Snowflake)是一种生成分布式全局唯一ID的算法,生成的ID称为SnowflakeIDs或snowflakes。这种算法由Twitter创建,并用于推文的ID。目前仓储平台生成ID是用的雪花算法修改后的版本。