一、算法介绍 Kruskal算法是一种用来查找最小生成树的算法,由Joseph Kruskal在1956年发表。用来解决同样问题的还有Prim算法和Boruvka算法等。三种算法都是贪心算法的应用。和Boruvka算法不同的地方是,Kruskal 算法在图中存在相同权值的边时也有效。最小生成树是一副 ...
分类:
编程语言 时间:
2019-12-02 00:20:12
阅读次数:
159
# 该题的标签为 1.堆 2. 贪心算法 目前还不知道用堆怎么解,本文只介绍贪新算法 1. 使用贪心解法比较简单。但是看了好多解释都说得不是很明白。 2. 本文对其进行个人的解释: 建立两个HashMap: 2.1 numCounts: 用来统计nums数据中出现的个数 2.2 numNeededC ...
分类:
编程语言 时间:
2019-11-24 17:49:46
阅读次数:
91
一.对贪心算法的理解 贪心算法所做的每个选择都是当前状态下最好的选择,可以依赖以往所做的选择,但不依赖将来做的选择,也不依赖子问题的解。它并不从整体最优上加以考虑,故贪心算法并不是总能得到整体最优解,但有些问题相比于动态规划算法,使用贪心算法会更简单且效率更高,比如找零钱问题等。 可以用贪心选择算法 ...
分类:
编程语言 时间:
2019-11-23 18:07:52
阅读次数:
99
贪心算法 基本要素:(1)最优子结构性质 (2)贪心选择性质 贪心算法通过一系列选择来得到问题的解,所做的每个选择都是当前状态下局部最好选择,即贪心选择,但是这种策略并不总能奏效。 在动态规划算法中,每步所做的选择往往依赖于相关子问题的解,因而只有在解出相关子问题后,才能做出选择; 而在贪心算法中, ...
分类:
编程语言 时间:
2019-11-21 12:23:43
阅读次数:
78
贪心算法 定义:在每一步选择中都进行当前状态下的最优解, 从而希望导致结果是最好算法。贪心算法在最优子结构问题中尤为有效。最优子结构的意思是局部最优解能决定全局最优解。举例:最小生成树的算法 (Prim MST、Kruskal MST、Dijkstra’s algorithm) 相比于动态规划 相同 ...
分类:
编程语言 时间:
2019-11-21 12:03:18
阅读次数:
94
一:概念:不考虑整体最优,做出的选择只是在某种意义上的局部最优。 二:性质 (1)贪心选择性质:指所求问题的整体最优解可以通过一系列局部最优的选择。贪心算法可行 的第一个基本要素。对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所做 的贪心选择最终导致问题的整体最优解。 (2)最优子结 ...
分类:
编程语言 时间:
2019-11-20 19:33:12
阅读次数:
54
引论:相比与动态规划算法,贪心算法是比较容易理解的,其思想就在于得到当前状态下局部最好选择,当一个问题的最优解包含其子问题的最优解时,即每个贪心选择都是子问题的最优解,那么就能的到该问题的最优解了。本次上机实践的题目虽然不是特别难,但相比前两次,这一次上机实践的效率远低于上两次,因为在实践的时候被第 ...
分类:
编程语言 时间:
2019-11-18 18:49:54
阅读次数:
87
题目描述 给你一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m]。请问k[0]xk[1]x...xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。 ...
分类:
编程语言 时间:
2019-11-18 15:37:30
阅读次数:
76
程序存储问题 题目: 解析: 这道题思路非常简单,就是选取最小的那几个程序放到磁盘里面,直到放不下为止。用贪心算法的思路来说,就是每个子问题都选取当前最小的程序,最终会得到整体的最优解。 由于使用sort函数,该算法的时间复杂度为O(nlogn);由于没有开辟新空间,所以空间复杂度为O(1)。 具体 ...
分类:
编程语言 时间:
2019-11-17 18:16:45
阅读次数:
112
算法第四章上机实践报告 一、 实践题目 4-1 程序存储问题 (90 分) 设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序 ...
分类:
编程语言 时间:
2019-11-17 16:19:14
阅读次数:
84