贪心法( Greedy algorithm),又称贪心算法,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。
1. 基本概念
贪心算法与动态规划的不同在于它每对每个子问题的解决方案都做出选择,不能回退。动态规划则会保存以前的运算结果,并根据以前的结果对当前进行选择,有回退功能。
所谓贪心算法是指,在对问题...
分类:
编程语言 时间:
2014-10-13 19:44:47
阅读次数:
547
1.词法分析中的“贪心法”
C语言的某些符号,例如/、*和=,只有一个字符长,称为单字符符号。而C语言中的其他符号,例如/*和==,以及标识符等都包含了多个字符,称为多字符符号。当C编译器读入一个字符'/'后又跟了一个字符'*',那么编译器就必须做出判断:是将其作为两个分别的符号对待,还是合起来作为一个符号来对待。C语言对这个问题的解决方案可以归纳为一个很简单的规则:每一个符号应该包含尽...
分类:
其他好文 时间:
2014-10-11 08:52:35
阅读次数:
245
2.1 截木板 【贪心法(Huffman 编码)】
方法2:优先级队列 (基于堆实现)
分类:
其他好文 时间:
2014-09-30 22:46:20
阅读次数:
125
【题意简述】:就是这个树桩,当它比它身边的树桩都高的时候,他就能炸掉身边的树桩。现在让我们使用最少的炸药将所有树桩都炸掉,问这些炸弹都放在哪些树桩上。
【分析】:简单的模拟一下,运用贪心法则,只要这个树桩比身边的其他树桩高,就输出它的位置即可。
但是,的确要注意一下边界的处理!
//412K 516Ms
#include
using namespace std;
int Stump[5...
分类:
其他好文 时间:
2014-09-25 23:33:48
阅读次数:
176
已知,有一批不同面值的硬币,没有硬币个数限制,求得到S的所有组合,以及最小,最大硬币个数。最小、最大硬币个数可以用贪心法,但是不一定能够得到有效解,但是可以提高结题速度,此处略。下面的解法比求解最大、最小硬币比较耗时。static int* set;static int Min = 1 Max) ....
分类:
其他好文 时间:
2014-08-28 21:02:56
阅读次数:
171
贪心算法的设计思想 贪心算法在解决这个问题的策略上目光短浅,仅仅依据当前已有的信息就做出选择,并且一旦做出了选择,无论将来有什么结果,这个选择都不会改变。换言之,贪心法并非从总体最优考虑,它所做出的选择仅仅是在某种意义上的局部最优。贪心算法对于大部分的优化问题都能产生最优解,但不能总获得总体最...
分类:
其他好文 时间:
2014-08-28 19:41:15
阅读次数:
226
已知,有一批不同面值的硬币,没有硬币个数限制,求得到S的所有组合,以及最小,最大硬币个数。
最小、最大硬币个数可以用贪心法,但是不一定能够得到有效解,但是可以提高结题速度,此处略。
下面的解法比求解最大、最小硬币比较耗时。
static int* set;
static int Min = 1<<10;
static int Max = 0;
void LeastCoin(int* ...
分类:
其他好文 时间:
2014-08-28 11:26:19
阅读次数:
175
前天用递归LTE,昨天用动态规划LTE,今天接着搞,改用贪心法。题目再放一次:'?'匹配任意字符,'*'匹配任意长度字符串Some examples:isMatch("aa","a") → falseisMatch("aa","aa") → trueisMatch("aaa","aa") → fal...
分类:
其他好文 时间:
2014-08-19 00:56:13
阅读次数:
336
题意:给出n纪念品的价格和钱数m,问最多能买多少件纪念品和买这些数量的纪念品的方案数。首先,求能买最多的纪念品的数量,用贪心法可以解决。将价钱排序,然后从最便宜的开始买,这样就很容易求得最多买的纪念品的数量。方案数就要用到动态规划。dp[j][k]表示花费不超过j元买k件物品的方案数dp[j][k]...
分类:
其他好文 时间:
2014-08-12 09:00:03
阅读次数:
160
在面试的过程中,有很多的考验对c的认识的情况,有时会被问到有关字符搭配以及运算先后顺序的问题,比如a+++++b的值,++i+++i+++i+i的值等类似的,这都属于c的符号方面的问题,那么怎样才能轻而易举的去认识它呢?...
分类:
编程语言 时间:
2014-08-10 15:52:10
阅读次数:
224