算法2013s-贪心算法II

合集下载

常用算法与程序设计第五章贪心算法

常用算法与程序设计第五章贪心算法
5.3 删数字问题
➢ 对给定的n位高精度正整数,去掉其中k(k<n)个数 字后,按原左右次序将组成一个新的正整数,使 得剩下的数字组成的新数最大。
➢ 操作对象是一个可以超过有效数字位数的n位高 精度数,存储在数组a中。
➢ 每次删除一个数字,选择一个使剩下的数最大的数 字作为删除对象。之所以选择这样“贪心”的操 作,是因为删k个数字的全局最优解包含了删一个 数字的子问题的最优解。
作业: 一个数列由n个正整数组成,对该数列进行
一次操作:去除其中两项a、b,添加一项 a*b+1。经过n-1次操作后该数列剩一个数a, 试求a的最大值。
18
Visual FoxPro
5.5 覆盖问题
二分图是一个无向图,它的n 个顶点可二分为集 合A和集合B,且同一集合中的任意两个顶点在图中 无边相连(即任何一条边都是一个顶点在集合A中, 另一个在集合B中)。当且仅当B中的每个顶点至少 与A中一个顶点相连时,A的一个子集A‘ 覆盖集合B (或简单地说,A’ 是一个覆盖)。覆盖A‘ 的大小即 为A’ 中的顶点数目。当且仅当A‘ 是覆盖B的子集中最 小的时,A’ 为最小覆盖。
15
Visual FoxPro
物品可拆背包问题C程序设计代码如下:
➢ for(i=1;i<=n-1;i++) 大到小排序 */
/* 对n件物品按单位重量的效益从
➢ for(j=i+1;j<=n;j++)
➢ if(p[i]/w[i]<p[j]/w[j])
➢ { h=p[i];p[i]=p[j]; p[j]=h;
5.1 贪心算法概述
5.1.1 贪心算法
有一艘大船准备用来装载货物。所有待装货物都装在 货箱中且所有货箱的大小都一样,但货箱的重量都各不相 同。设第i个货箱的重量为wi(1≤i≤n),而货船的最大载 重量为c,我们的目的是在货船上装入最多箱的货物。

计算机算法设计与分析--第4章 贪心算法幻灯片PPT

计算机算法设计与分析--第4章 贪心算法幻灯片PPT
计算机算法设计与分析--第4章 贪心算法幻灯片PPT
本PPT课件仅供大家学习使用 请学习完及时删除处理 谢谢!
提纲
一、贪心算法的基本思想 二、活动安排问题 三、最优装载 四、哈夫曼编码 五、单源最短路径 六、最小生成树 七、多机调度问题
2021/5/19
2
提纲
一、贪心算法的基本思想 二、活动安排问题 三、最优装载 四、哈夫曼编码 五、单源最短路径 六、最小生成树 七、多机调度问题
一、贪心算法的基本思想 二、活动安排问题 三、最优装载 四、哈夫曼编码 五、单源最短路径 六、最小生成树 七、多机调度问题
2021/5/19
28
3.1 问题定义
Optimal Loading problem
有一批集装箱要装上一艘载重量为c的轮船。其 中集装箱i的重量为Wi。最优装载问题要求确定 在装载体积不受限制的情况下,将尽可能多的 集装箱装上轮船。
2021/5/19
21
2.3贪心算法
template<class Type>
void GreedySelector(int n, Type s[], Type f[], bool A[])
{
A[1]=true; int j=1; for (int i=2;i<=n;i++) {
各活动的起始时间和结 束时间存储于数组s和f 中且按结束时间的非减
2.4 算法正确性证明
需要证明:
活动安排问题有一个最优解以贪心选择开始; 活动安排问题具有最优子结构; 算法每一步按照贪心选择计算,最终可得到
原问题的一个最优解。
2021/5/19
24
2.4 算法正确性证明
定理1 设E={1,2,…,n}是n个活动集合,[si,fi ]是活动 的起始终止时间,且f1f2….fn,E的活动安排 问题的某个最优解包括活动1.

信息学奥林匹克竞赛指导之基础算法—贪心算法

信息学奥林匹克竞赛指导之基础算法—贪心算法
超过C的情况下让总价值最高。每一个物体可以只取走一部分,价值和
重量按比例计算。
7
-贪心算法
贪心算法的经典实例
• 思路点拨:本问题是在上一个问题的基础上增加了价值项,所以不能简
单地向上一题那样先选出轻的(轻的可能其价值也小),也不能先拿价
值大的(它可能特别重),而应该综合考虑两个因素。一种直观的贪心
可乘两个人。求用最少的船载所有人的方案。
8
-贪心算法
贪心算法的经典实例
• 思路点拨:考虑最轻的人i,他应该和谁一起乘呢?如果每个人都不能和
他一起乘,则只能每人乘一艘船。否则他应该选择能和他一起乘的人中
最重的一个人j。这样的选择只是让“眼前”的浪费最少,因此它是一种
贪心策略。
• 证明:
• 情况1:i不和任何一个人同乘一艘船,那么可以把j拉过来和他一起乘,总船数不会
法不从整体最优考虑,它所做出的选择只是局部最优解。
3
-贪心算法
贪心算法的概念及其特点
• 贪心算法是从问题的初始状态出发,通过若干次的贪心选择而得
到的最优值的一种求解问题的策略。
• 特点:
• 贪心选择:所谓贪心选择是指应用同一规则,将原问题变为一个相似的
但规模更小的子问题,而后的每一步都是当前看似最佳的选择,且这种
29
-贪心算法
贪心算法的经典应用-3
• 【输出格式】
• 对每组测试数据输出一个数字,表示要浇灌整块草坪所需喷头数
目的最小值。如果所有喷头都打开还不能浇灌整块草坪,则输出1。
• 【样例输入】
•3
• 8 20 2
•53
30
-贪心算法
贪心算法的经典应用-3


算法2013s-贪心算法II

算法2013s-贪心算法II
– 顶点覆盖的集合包括所有的边.
• 一个顶点覆盖的大小就是这个覆盖着定点的数目。 • 顶点覆盖问题就是找到一个图纸最小的顶点覆盖。 • 贪婪试探: 每次覆盖尽量多的边 (有最大度的边) 然后删除所 有被覆盖的边。 • 贪婪试探并不能总是找到最优解!
– 顶点覆盖问题是 NP完全的.
8/22/2013
算法设计与分析-贪心算法II
算法设计与分析
讲授内容:动态规划II 教 师:胡学钢、吴共庆
2013年8月22日
纲要
• 活动选择问题 • 背包问题 • 哈夫曼编码
8/22/2013
算法设计与分析-贪心算法II
2
贪心算法: 顶点覆盖
• 无向图 G=(V, E)的一个顶点覆盖为一个子集V‘ V ,使得如 果 (u, v) E, 那么 u V’ 或者v V‘, 或者两者都是.
– 思路: 常用的字符使用短的深度.
8/22/2013
算法设计与分析-贪心算法II
14
哈夫曼编码过程
• 每步将费用最小的两个节点配对.
8/22/2013
算法设计与分析-贪心算法II
15
哈夫曼算法
Huffman(C) 1. n |C|; 2. Q C; 3. for i 1 to n-1 4. z Allocate-Node(); 5. x left[z] Extract-Min(Q); 6. y right[z] Extract-Min(Q); 7. f[z] f[x]+f[y]; 8. Insert(Q, z); 9. return Extract-Min(Q)
• 时间复杂度: O(nlgn).
– Extract-Min(Q)堆操作要 O(lg n)。 – 开始需要O(n lgn) 的时间创建二项堆。

《贪心算法》PPT课件

《贪心算法》PPT课件

{x1,x2,x3} {1,2/15,0} { 0,2/3,1} {0,1,1/2} {...}
n
wixi
20
i1
n
vixi
i1
20
20
...
31
...
[算法思路]1).将各物体按单位价值由高到低排序. 2).取价值最高者放入背包. 3).计算背包剩余空间. 4).在剩余物体中取价值最高者放入背包. 若背包剩余容量=0或物体全部装入背包为止
这种策略下的量度是已装入物品的累计效益值与所用 容量之比。
(v2/w2 , v3/w3 , v1/w1 )=(24/15,15/10, 25/18) 先装入重量为15的物品2,在装入重量为5的物品3, ∑pixi =24+15*5/10=31.5。此结果为最优解。
算法设计与分析 > 贪心算法
[例] n=3,c=20 (v1,v2,v3)=(25,24,15),(w1,w2,w3)=(18,15,10)
[常见应用]背包问题,最小生成树,最短路径,作业调度等等 [算法优点]求解速度快,时间复杂性有较低的阶. [算法缺点]需证明是最优解.
[适用问题] 具备贪心选择和最优子结构性质的最优化问题 贪心选择性质:整体的最优解可通过一系列局部最优解达到,即
贪心选择到达。
贪心算法通常以自顶向下的方式进行,以迭代的方式作出相
精选ppt13最优化描述找一个n元向量x44背包问题knapsackproblemmax问题描述设有n个物体和一个背包物体i的重量为w1装入背包则具有价值为v目标是找到一个方案使放入背包的物体总价值最高贪心算法精选ppt141652425121502028202312031011220315算法设计与分析贪心算法精选ppt151用贪心策略求解背包问题时首先要选出最优的度量标准

二分图最大匹配问题(贪心算法)

二分图最大匹配问题(贪心算法)
网络流算法(编程复杂,小题大做) 匈牙利算法(理解困难,实现简单) 以上这些我都不会怎么办?
贪心算法
下面,我们引进一种能够完美解决二分图 最大匹配问题的贪心算法。
会议安排
一个重要的会议由A公司的M位代表和B公司的N 位代表参加(M,N≤1000,代表用1,2,……, M和1,2,……,N表示)。他们被预先分成 K(K≤60000)组进行谈判。每组两个人分别来自A 公司和B公司。每个参加会议的代表都至少参加 了一组谈判。会议为每一个代表都准备了一个房 间。技术人员将会在一些房间之间连上直通电话, 一个代表至少要和他的一个谈判对手直接联络。 连接一个直通电话的价格是常数。技术人员要用 尽量少的花费满足会议的要求。
主程序代码
n:=n+m; while tot<n do begin b:=maxlongint;//找结点u for a:=1 to n do if(not visit[a])and(degree[a]<b)then begin b:=degree[a]; c:=a; end; a:=u[c]; b:=maxlongint;// b:=maxlongint;//找结点v v while a<>0 do begin if(not visit[v[a]])and(degree[v[a]]<b)then begin b:=degree[v[a]]; d:=v[a]; end; a:=next[a]; end; inc(ans);//连边,答案加一 ins(c);//对u进行删除操作 if b<>maxlongint then ins(d);//如果存在v,对v进行删除操作 end; writeln(ans);; end.
贪心算法
这样循环做下来,我们每做一次都相当于 连了一条边(u,v),于是inc(ans)。 同时,我们对这条边的两个端点u,v都做了 删除操作(如果可以的话)。每删一个点 就inc(tot),直到tot=n+m,即两边的点均被 删完。 此时我们得到的ans值即为答案,直接输出 即可。

算法导论-贪心算法

动态规划是一种通过将问题分解为子问题并存储子问 题的解来避免重复计算的技术。
贪心算法可以看作是动态规划的一种特例,其中只保 留了与当前状态和当前选择相关的子问题的解,而不
是保留所有子问题的解。
贪心算法通常在每一步选择中只考虑当前状态下的局 部最优解,而不是考虑所有可能的选择和未来的状态。
贪心算法的经述 • 贪心算法的基本思想 • 贪心算法的经典问题 • 贪心算法的实现与优化 • 贪心算法的性能分析 • 总结与展望
贪心算法概述
01
定义与特点
定义
贪心算法是一种在每一步选择中都采取当前情况下最好或最优(即最有利)的 选择,从而希望导致结果是最好或最优的算法。
无法保证全局最优解
贪心算法可能只得到局部最优解,而非全局最 优解。
缺乏理论支持
贪心算法的理论基础尚不完备,难以对所有情况做出准确预测。
贪心算法与其他算法的比较
与动态规划算法比较
动态规划算法通过将问题分解为子问题来求解,适合处理具有重叠子问题和最优子结构的问题;而贪 心算法则是每一步都选择当前最优的选择,希望这样的局部最优选择能够导致全局最优解。
法的时间复杂度。
需要注意的是,贪心算法并不总是能够提供最优解,因此在实际应用中, 需要权衡时间复杂度和解的质量。
空间复杂度分析
贪心算法的空间复杂度主要取决于算法 的存储需求。在某些情况下,贪心算法 可能需要大量的存储空间来存储中间结
果或数据结构。
在分析贪心算法的空间复杂度时,需要 考虑算法所需的存储空间和存储结构的 复杂性。通过将每个存储需求的空间复 杂度相加,可以得出整个算法的空间复
与分治算法比较
分治算法是将问题分解为若干个子问题,然后递归地求解这些子问题,再将子问题的解合并起来得到 原问题的解;而贪心算法是在每一步都做出在当前状态下最好或最优(即最有利)的选择,希望这样 的局部最优选择能够导致全局最优解。

贪心算法的图文讲解


总结
• 在对问题求解时,会选择当前看起来最有希望成功的边(任务) 。一旦做出决定,它就不会再重新考虑,也不会关心后面会引发 什么情况。也就是说,不从整体最优上加以考虑,它所做出的是 在某种意义上的局部最优解。 • 贪心算法是一种能够得到某种度量意义下的最优解的分级处理方 法,通过一系列的选择来得到一个问题的解,而它所做的每一次 选择都是当前状态下某种意义的最好选择,即贪心选择。即希望 通过问题的局部最优解来求出整个问题的最优解。这种策略是一 种很简洁的方法,对许多问题它能产生整体最优解,但不能保证 总是有效,因为它不是对所有问题都能得到整体最优解,只能说 其解必然是最优解的很好近似值
对于这个问题我们有以下几种情况:设加油次数为k,每个加油 站间距离为a[i];i=0,1,2,3……n (1)始点到终点的距离小于N,则加油次数k=0; (2)始点到终点的距离大于N时: A 加油站间的距离相等,即a[i]=a[j]=L=N,则加油次数最少k=n ; B 加油站间的距离相等,即a[i]=a[j]=L>N,则不可能到达终点; C 加油站间的距离相等,即a[i]=a[j]=L<N,则加油次数 k=n/N(n%N==0)或k=[n/N]+1(n%N!=0); D 加油站间的距离不相等,即a[i]!=a[j],则加油次数k通过贪心 算法求解。

• • 贪心的基本思想
• 用局部解构造全局解,即从问题的某一个初始解逐步逼 近给定的目标,以尽可能快地求得更好的解。当某个算 法中的某一步不能再继续前进时,算法停止。贪心算法 思想的本质就是分处理 出一个最好的方案。 • 利用贪心策略解题,需要解决两个问题: • (1)该题是否适合于用贪心策略求解; • (2)如何选择贪心标准,以得到问题的最优/较优解。

贪心算法

有人说贪心算法是最简单的算法,原因很简单:你我其实都很贪,根本不用学就知道怎么贪。

有人说贪心算法是最复杂的算法,原因也很简单:这世上会贪的人太多了,那轮到你我的份?贪心算法详解贪心算法思想:顾名思义,贪心算法总是作出在当前看来最好的选择。

也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。

当然,希望贪心算法得到的最终结果也是整体最优的。

虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。

如单源最短路经问题,最小生成树问题等。

在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。

贪心算法的基本要素:1.贪心选择性质。

所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。

这是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。

动态规划算法通常以自底向上的方式解各子问题,而贪心算法则通常以自顶向下的方式进行,以迭代的方式作出相继的贪心选择,每作一次贪心选择就将所求问题简化为规模更小的子问题。

对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所作的贪心选择最终导致问题的整体最优解。

2. 当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。

问题的最优子结构性质是该问题可用动态规划算法或贪心算法求解的关键特征。

贪心算法的基本思路:从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快的地求得更好的解。

当达到算法中的某一步不能再继续前进时,算法停止。

该算法存在问题:1. 不能保证求得的最后解是最佳的;2. 不能用来求最大或最小解问题;3. 只能求满足某些约束条件的可行解的范围。

实现该算法的过程:从问题的某一初始解出发;while 能朝给定总目标前进一步do求出可行解的一个解元素;由所有解元素组合成问题的一个可行解;用背包问题来介绍贪心算法:背包问题:有一个背包,背包容量是M=150。

贪心算法PPT课件

且有||B’-{k}||>||B-{1}||,这与假设2°矛盾。 ▌
安排方案
f1
B
安排方案
fk
B’
…… 共j个活动
可能 相同 不存在
……
可能
如果 B’包 含这 个活, 则B 一定 包含
9
(2) 时间复杂度分析: 因为排序过程可以在O(nlogn)时间内完成,而求最优活动子 集的过程只需O(n)次比较,因此这个算法的时间复杂度为 O(nlogn)。 (3) 贪心策略设计算法的一般特点
·选Si最小的,这样可以增大场地的利用率; ·选fi最小的,使得下一个活动可以更早开始。
由于活动的占用时间长度没有限制,因此后一选择更合理。
6
为了在每一次选择时取当前可以安排的活动中最早结束的活动,应首先把 n项活动按结束时间的先后进行升序排序。即,使f1≤f2≤…≤fn,然后在Si值 不小于当前时刻的活动中取fi值最小者。 算法:
·算法的设计比较简单; ·算法一般比较快速; ·算法的正确性一般不明显,需要论证;如果正确性不能保 证,那么它往往可以得到近似最优解。
10
5.2 背包(Knapsack)问题
1. 问题描述
已知:n个(应为n种)物体{1,2,…,n}与一个背包。物体i的重量 (或体积)为Wi>0,价值为Pi>0(i=1,2,…,n),背包容量为 M>0。
计算机算法 ——设计与分析导论
刘璟
1
Chapter 5. 贪心(Greedy)技术
❖ 5.1 贪心策略的思想 ❖ 5.2 背包(Knapsack)问题 ❖ 5.3 Huffman编码 ❖ 5.4 多机调度问题的近似解法 ❖ 5.5 单源最短路径的Dijkstra算法
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

• 时间复杂度: O(nlgn).
– Extract-Min(Q)堆操作要 O(lg n)。 – 开始需要O(n lgn) 的时间创建二项堆。
8/21/2013 算法设计与分析-贪心算法II 16
哈夫曼算法: 贪心选择
• 贪心选择: 两个频率最低的字符 x 和 y 必须 长度相同而且仅仅是最后一位不同。
8/21/2013
算法设计与分析-贪心算法II
13
最优前缀码设计
• T的编码费用 : B(T)= c C f(c)dT(c)
– c : 字符集C中的字符 – f(c): c出现的频率 – dT(c): c 的叶子的深度(码字c的长度)
• 编码设计: 给定 f(c1), f(c2), …, f(cn), 创建二叉一棵有n个叶子的树使得 B(T) 最小.
8/21/2013
算法设计与分析-贪心算法II
17
哈夫曼算法: 最优子结构
• 最优子结构: 令 T 为C的最优前缀码的二叉 树 。令 z 为两个叶子字符 x 和 y的父亲. 如 果 f [z]=f [x]+f [y], 树 T‘ = T - {x, y} 表示C’= C - {x, y} {z} 的最优前缀码.
算法设计与分析
讲授内容:动态规划II 教 师:胡学钢、吴共庆
2013年8月21日
纲要
• 活动选择问题 • 背包问题 • 哈夫曼编码
算法II
2
贪心算法: 顶点覆盖
• 无向图 G=(V, E)的一个顶点覆盖为一个子集V‘ V ,使得如 果 (u, v) E, 那么 u V’ 或者v V‘, 或者两者都是.
8/21/2013 算法设计与分析-贪心算法II 10
背包问题
• 背包问题: 给定 n 物体, 第 i个 价值 vi 元 并且重量 wi 磅, 一个贼希望 带走价值尽量多的东西, 但是他的背包仅仅可以容纳 W 磅. • 0-1 背包问题: 每个物体要么带着,要么放下 (0-1 决定). • 分数 背包问题: 允许拿走部分物体. • 例如: = (60, 100, 120), = (10, 20, 30), W = 50
– 思路: 常用的字符使用短的深度.
8/21/2013
算法设计与分析-贪心算法II
14
哈夫曼编码过程
• 每步将费用最小的两个节点配对.
8/21/2013
算法设计与分析-贪心算法II
15
哈夫曼算法
Huffman(C) 1. n |C|; 2. Q C; 3. for i 1 to n-1 4. z Allocate-Node(); 5. x left[z] Extract-Min(Q); 6. y right[z] Extract-Min(Q); 7. f[z] f[x]+f[y]; 8. Insert(Q, z); 9. return Extract-Min(Q)
8/21/2013
算法设计与分析-贪心算法II
8
活动选择问题-迭代贪心算法
Greedy-Activity-Selector(s,f) /* Assume f1 f2 … fn. */ 1. n length[s]; 2. A {1}; 3. j 1; 4. for i 2 to n 5. if si fj 6. A A {i}; 7. j i; 8. return A.
3
活动选择问题
• 活动选择问题: 给定一个集合 S = {1, 2, …, n} n 个计划的活动,对每个活动 i,开始时间为 si 结束 时间为 fi, 选择出相互兼容的活动最大集合.
– 如果被选中,活动 i 在半开放的区间 [si, fi)中进行. – 活动 i 和j 兼容 如果 [si, fi) 和 [sj, fj) 不重叠 (i.e., si fj or sj fi).
– 固定长度码 (块码): a: 000, b: 001, …, f: 101 ace 000 010 100. – 可变长度吗: 常用的的字符 短的码字; 不常用的字 符 长的码字
8/21/2013
算法设计与分析-贪心算法II
12
二叉树和前缀码对比
• 前缀码: 没有一个码是其他码的前缀.
• 贪心方案按照顺序装每磅价值最高的物体,可以得到分数版问题的 最优解, 但是对 0-1 版问题不适用。 • 0-1 背包问题 可以使用DP在 O(nW) 的时间内解决 。
8/21/2013 算法设计与分析-贪心算法II 11
哈夫曼编码
• 用于数据压缩, 指令集编码, 等等. • 二进制串码: 字符用一个唯一的二进制字符串表 示
8/21/2013
算法设计与分析-贪心算法II
4
活动选择问题的分析
8/21/2013
算法设计与分析-贪心算法II
5
活动选择问题-一个递归解
8/21/2013
算法设计与分析-贪心算法II
6
活动选择-贪心选择
8/21/2013
算法设计与分析-贪心算法II
7
活动选择问题-递归贪心算法
• 初始调用RECURSIVE-ACTIVITY-SELECTOR(s, f, 0, n)
• 例如, 如果 A 是S的最优解, 那么 A‘ = A - {1} 是 S' = {i S: si f1}的最优解.
• 贪心算法 (试探) 并不能总是得到最优解. • 谈论算法和动态规划 (DP)对比
– 相同: 最优子结构 – 差别: 贪婪选择特性 – 如果贪婪算法不是最优的,可以使用DP 。
8/21/2013
算法设计与分析-贪心算法II
18
• 如果不考虑排序,算法的时间复杂度为: O(n)
8/21/2013
算法设计与分析-贪心算法II
9
贪心策略中的要素
• 什么时候使用贪婪算法?
– 贪心选择特性: A全局的最优解可以通过局部的最优 (贪婪)选择得到.
• 动态规划需要检查子问题的解。
– 最优子结构: 问题的最优解包含了其子问题的最优解.
– 顶点覆盖的集合包括所有的边.
• 一个顶点覆盖的大小就是这个覆盖着定点的数目。 • 顶点覆盖问题就是找到一个图纸最小的顶点覆盖。 • 贪婪试探: 每次覆盖尽量多的边 (有最大度的边) 然后删除所 有被覆盖的边。 • 贪婪试探并不能总是找到最优解!
– 顶点覆盖问题是 NP完全的.
8/21/2013
算法设计与分析-贪心算法II
相关文档
最新文档