给定一个非负整数数组,假定你的初始位置为数组第一个下标。 数组中的每个元素代表你在那个位置能够跳跃的最大长度。 你的目标是到达最后一个下标,并且使用最少的跳跃次数。 例如: A=[2,3,1,1,4],到达最后一个下标的最少跳跃次数为 2。(先跳跃 1 步,从下标 0 到 1,然后跳跃 3 步,到达 ...
分类:
编程语言 时间:
2017-09-19 04:04:50
阅读次数:
299
贪心算法与其弊端 贪心算法又称贪婪算法,见文思意,贪心贪心,无非就是想办法寻找最好的方法,对应到算法上即将一个问题分解成若干个小问题,每步选取当前最优解,贪心算法的弊端在于它并非对所有的问题都有效,当问题不具有最佳子结构或是贪心策略有后效性时,得出的结果可能就并不正确。相应的问题有背包问题,由此也可 ...
分类:
其他好文 时间:
2017-09-14 23:50:36
阅读次数:
213
假定条件和上一篇相同。。。 其实算法思路和上一篇也相同,均为贪心算法。。。 ...
分类:
编程语言 时间:
2017-09-09 00:03:05
阅读次数:
131
最简单的硬币问题: 题目描述: 有1,5,10,50,100,500的硬币各C1,C5,C10,C50,C100,C500枚,现在要用这些硬币来支付A元,最少需要多少枚硬币。 解题思路: 贪心算法,竟可能多的使用面值最大的硬币的这一贪心的策略来切了。 ...
分类:
编程语言 时间:
2017-09-08 00:11:23
阅读次数:
157
最小生成树的Prim算法也是贪心算法的一大经典应用。Prim算法的特点是时刻维护一棵树,算法不断加边,加的过程始终是一棵树。 Prim算法过程:一条边一条边地加, 维护一棵树。 初始 E = {}空集合, V = {任意节点}循环(n – 1)次,每次选择一条边(v1,v2), 满足:v1属于V , ...
分类:
编程语言 时间:
2017-09-02 19:00:45
阅读次数:
262
网传常用五大算法:贪婪算法,动态规划算法,分治算法,回溯算法以及分支限界算法 贪心算法 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。 贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选 ...
分类:
编程语言 时间:
2017-09-01 11:21:18
阅读次数:
223
每次体会算法都有新的感觉,刷题越多,对算法的理解感觉也就越深刻。下面我们来重新体会下分治法,动态规划,贪心法,递归的理解。1.分治法:将问题分成单独的阶段,每个阶段互相不干扰很独立,如10米长的木棍,切成10段,每段去解决每一段的问题。(阶段没有关系)2.贪心法站..
分类:
编程语言 时间:
2017-08-26 04:49:08
阅读次数:
155
这是昨天面试百度时碰到的一道算法题:任意数分三组,使得每组的和尽量相等(感谢博友提供的关于该问题的相关资料 划分问题)。由于时间仓促,加之面试时头昏脑涨,这道题没做出来甚至没有给出思路,这让我多少有些遗憾和不甘。因为最近接触算法的东西较多而且本身对算法感兴趣,所以回家之后绞尽脑汁想把这题做出来。其实 ...
分类:
编程语言 时间:
2017-08-23 13:43:41
阅读次数:
178
题目: 题目原文链接:http://codeforces.com/contest/845/problem/C 题意:现在我们有一个电视清单,有两个电视,电视清单上有每一个节目的开始时间和结束时间。 电视不能接连不间断的播放,例如TV1播放完1-2点的节目后不能接着播放2-3点的电视,除非在TV2上播 ...
分类:
编程语言 时间:
2017-08-22 12:28:05
阅读次数:
132
通常用于最优化问题,我们做出一组选择来达到最优解。每步都追求局部最优。对很多问题都能求得最优解,而且速度比动态规划方法快得多。 16.1 活动选择问题 按结束时间排序,然后选择兼容活动。 定理16.1 考虑任意非空子问题Sk,令am是Sk中结束时间最早的活动,则am在Sk的某个最大兼容活动子集中。 ...
分类:
编程语言 时间:
2017-08-21 17:03:01
阅读次数:
351