重要函数:
头文件#include
sort(数组名,数组名+要排序的元素个数) 函数作用:递增排序
reverse(数组名,数组名+要排序的元素个数) 函数作用:逆置数组
1概念
顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。
可以用贪心算法求解的问题的性质:贪心选择性质,最优子结构性质。
贪心选择性质:每一步所作的贪心选择最终导致问题的整体最优解。
最优子结构:一个问题的最优解包含其子问题的最优解。
动态规划算法通常以自底向上的方式解各子问题,而贪心算法则通常以自顶向下的方式进行。
2哈夫曼编码
如何画哈夫曼树?
https://jingyan.baidu.com/article/a501d80c16dfa0ec620f5e70.html
哈夫曼编码是广泛地用于数据文件压缩的十分有效的编码方法。其压缩率通常在20%~90%之间。哈夫曼编码算法用字符在文件中出现的频率表格来建立一个用0,1串表示各字符的最优表示方式。给出现频率高的字符较短的编码,出现频率较低的字符以较长的编码,可以大大缩短总码长。
例:一个包含100,000个字符的文件,各字符出现频率不同,频率表格如下所示。在定长变码的情况下文件共需要需要100,000x3=300,000位。
a b c d e f
频率(千次) 45 13 12 16 9 5
算法考前突击第四章贪心算法
本文介绍了贪心算法的概念,强调了贪心选择性质和最优子结构的重要性。通过哈夫曼编码展示了贪心算法的应用,包括哈夫曼树的构建、前缀码和最优前缀码的定义。此外,还探讨了贪心算法在解决单源最短路径、最小生成树等问题中的应用。同时,对比了0-1背包问题和背包问题,说明了贪心算法在某些问题中的局限性。最后,提供了一些实际问题如最优装载、活动选择和多元Huffman编码问题的贪心解法示例。
摘要由CSDN通过智能技术生成