
贪心算法
桃三岁
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法设计——荷马史诗(K叉哈夫曼 贪心)
题目 题目链接:荷马史诗 题目描述: 追逐影子的人,自己就是影子。 ——荷马 Allison 最近迷上了文学。她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的《荷马史诗》。但是由《奥德赛》和《伊利亚特》组成的鸿篇巨制《荷马史诗》实在是太长了,Allison 想通过一种编码方式使得它变得短一些。 一部《荷马史诗》中有 n 种不同的单词,从 1 到 n 进行编号。其中第 i 种单词出现的总次数为 wi。Allison 想要用 k 进制串 si 来替换第 i 种单词,使得其满足如下要求: 对原创 2020-05-16 16:01:32 · 517 阅读 · 0 评论 -
算法设计——Fence Repair(2叉哈夫曼树)(贪心)
问题 题目链接:Fence Repair 题目描述及分析:没啥好说的,就是求一个花费问题,每段木头花的钱就是自己的长度,我们可以用哈夫曼树来解决这个问题,因为使用哈夫曼时我们得到的总权重一定最小。 比如长为21的木板,要分为5,8,8三段 如果我们先把木板分为5,16那么花费21,然后再将16分为8和8,一共花费37。 如果我们先分为13和8,再将13分为5和8,那么花费34 所以我们可以通过哈夫曼树找到最小花费。 思路 ,求哈夫曼树的过程为:先将所有元素进行排序放入集合 ①选出最小的两个元素 ②将原来最小原创 2020-05-15 15:44:46 · 382 阅读 · 0 评论 -
算法设计——最短路(Floyd)(贪心)
题目链接:最短路 求最短路径一般有两种算法: 1.弗洛伊德 2.迪杰斯特拉 关于迪杰斯特拉算法→最短路径 两算法的区别: 弗洛伊德算法是可以解决任意两点间的最短路径的一种算法 Dijkstra算法是用于求解图中某源点到其余各顶点的最短路径的算法 那我们来看看弗洛伊德算法 思想 通过Floyd计算图中各个顶点的最短路径时,需要引入两个矩阵,矩阵D中的元素表示顶点i到顶点j的距离。矩阵P中的元素表示顶点i到顶点j经过了P记录的值所表示的顶点。但在此题中不需要记录P 过程 顶点数为n的话,就对初始矩阵进行n次更新原创 2020-05-15 15:06:22 · 2902 阅读 · 0 评论 -
算法设计——最小生成树(Kruscal与Prim含练习)(贪心)
两种算法 Kruscal与Prim Prim算法 思想: 这个算法就是先将所有点放入集合S,拿出一点放入集合V ①寻找与集合V中相连的且距离最小的顶点 ②将此顶点从集合S中拿出来放入集合V ③重复上述步骤,直到S为空集(代表所有点都已使用) 具体过程就是: 看看练习:最小生成树Prim以及Agri-Net 这一类的题都可以用Prim算法实现 只是数据规模形式可能需要修改 看看代码: #include<stdio.h> #define MAX 105 #define inf 100000 in原创 2020-05-15 13:58:41 · 738 阅读 · 0 评论 -
算法设计——Dijkstra最短路径(贪心算法)
问题 已知一个图 求某个顶点出发到达其他顶点的最短路径 分析 已知一个图的顶点和其各边权重 求某个顶点s出发到达其他顶点的最短路径 G=(V,E,W) V={1,2,3…n} s=1 那么我们分为以下几个步骤: 1.初始S={1} 2.对于i∈V-S,计算1到i的相对S的最短距离,长度为dist[i] 3.选择V-S中dist值最小的j,将j加入S,修改V-S中的dist值 4.继续上述过程,直...原创 2020-04-25 12:38:23 · 1343 阅读 · 0 评论 -
算法设计——哈夫曼编码(贪心算法)
问题 已知一组字符的频率,求其哈夫曼编码 即构造一棵哈夫曼树(字符均在叶子节点上) 如果使用固定编码会导致空间浪费,所以用哈夫曼编码减少浪费 分析 平均传输位数B=∑(字符出现的频率fX字符所在的叶子在书中的深度d) 我们要使平均传输位数最小,那么我们就需要构建哈夫曼树 哈夫曼树:每次从已知频率中选择频率最小的两个进行构建,使用了频率最小的后需要将两频率和加起来放在已知中,同时删除使用过的频率 最...原创 2020-04-25 11:18:59 · 4988 阅读 · 0 评论 -
算法设计——最优装载问题(贪心算法)
问题描述 分析 满足贪心选择性质和最优子结构性质 贪心选择性质 设集合{x1,x2,x3,x4,xn}是箱子重量从小到大的排序,如果集合A是此问题的一个最优解,如果A的第一个箱子k=1,那么A满足贪心选择性质的最优解,如果k!=1,那么存在一个集合B=A-{k}+{1},此时A,B内元素个数一样多,但是B的总重量更小,说明B也是最优解,那么一定存在一个以贪心选择开始的最优解 最优子结构性质 设(...原创 2020-04-24 23:27:30 · 15776 阅读 · 0 评论 -
算法设计——活动安排(贪心算法)
问题 如有以下11个活动: 要求最多可进行多少个活动 分析 对于这种问题,有三种方法: (1)开始时间早的先排序 (2)占用时间少的先排序 (3)结束时间早的先排序 那么哪一种方法是正确的呢? 先来看看第一种:开始时间早的先排序 这告诉我们,如果开始时间早但占用时间长的话是不能优先排序的 那么来看看第二种方法:占用时间少的先排序 这说明,如果占用时间少但正好处于两个活动之间(不是指空闲的)...原创 2020-04-24 00:55:07 · 1844 阅读 · 1 评论 -
算法设计——贪心算法概述
此部分包括: 特点 两大性质:贪心选择性质、最优子结构性质 贪心算法与动态规划算法的异同 算法正确性证明 贪心算法基本步骤 ---------------------------------------------------------------------------------------------------- 特点 设计要素: (1)适用于组合优化的问题 (2)求解过程是多部判断过程...原创 2020-04-24 01:22:34 · 531 阅读 · 0 评论