第4章贪心算法习题(阅读)课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第4章贪心算法习题(阅读)课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 贪心 算法 习题 阅读 课件
- 资源描述:
-
1、12课程安排课程安排12345678910111213141516周二周二P PP PTTTTP PTTTTP PTTTTP PTTTTTTTTP P周四周四P PP PP PP PP PP PP PP PP PP PP PP PP PP P 端午端午考试考试TT3第第4章章 贪心算法贪心算法会场安排问题会场安排问题最优合并问题最优合并问题磁带最优存储问题磁带最优存储问题磁盘文件最优存储问题磁盘文件最优存储问题程序存储问题程序存储问题最优服务次序问题最优服务次序问题多处最优服务次序问题多处最优服务次序问题d森林问题森林问题汽车加油问题汽车加油问题 区间覆盖问题区间覆盖问题 硬币找钱问题硬币找钱
2、问题 删数问题删数问题 数列极差问题数列极差问题嵌套箱问题嵌套箱问题 套汇问题套汇问题 信号增强装置问题信号增强装置问题 磁带最大利用率问题磁带最大利用率问题 非单位时间任务安排问题非单位时间任务安排问题 多元多元Huffman编码问题编码问题 多元多元Huffman编码变形编码变形 区间相交问题区间相交问题 任务时间表问题任务时间表问题 最优分解问题最优分解问题 可重复最优分解问题可重复最优分解问题 可重复最优组合分解问题可重复最优组合分解问题 旅行规划问题旅行规划问题 登山机器人问题登山机器人问题4算法实现题算法实现题4-1 会场安排问题会场安排问题 问题描述:问题描述:假设要在足够多的会
3、场里安排一批活动,并希望使假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个有效的贪心算法进行安用尽可能少的会场。设计一个有效的贪心算法进行安排。排。(这个问题实际上是著名的图着色问题。若将每一这个问题实际上是著名的图着色问题。若将每一个活动作为图的一个顶点,不相容活动间用边相连。个活动作为图的一个顶点,不相容活动间用边相连。使相邻顶点着有不同颜色的最小着色数,相应于要找使相邻顶点着有不同颜色的最小着色数,相应于要找的最小会场数。的最小会场数。)编程任务:编程任务:对于给定的对于给定的k个待安排的活动,编程计算使用最少个待安排的活动,编程计算使用最少会场的时间表会场的时间表
4、(必须都安排完成必须都安排完成)。5算法实现题算法实现题4-1 会场安排问题会场安排问题 数据输入:数据输入:第一行有第一行有1 个正整数个正整数k,表示有,表示有k个待安排的活动。接个待安排的活动。接下来的下来的k行中,每行有行中,每行有2个正整数,分别表示个正整数,分别表示k个待安排个待安排的活动开始时间和结束时间。时间以的活动开始时间和结束时间。时间以0 点开始的分钟计。点开始的分钟计。结果输出结果输出:最少会场数。最少会场数。输入文件输入文件51 2312 2825 3527 8036 50输出示例输出示例36算法实现题算法实现题4-5 程序存储问题程序存储问题问题描述:问题描述:设有
5、设有n 个程序个程序1,2,n 要存放在长度为要存放在长度为L的磁带上。的磁带上。程序程序i存放在磁带上的长度是存放在磁带上的长度是 li,1 i n。程序存储问题要求确定这程序存储问题要求确定这n 个程序在磁带上的一个个程序在磁带上的一个存储方案,使得能够在磁带上存储尽可能多的程序。存储方案,使得能够在磁带上存储尽可能多的程序。编程任务:编程任务:对于给定的对于给定的n个程序存放在磁带上的长度,编程计个程序存放在磁带上的长度,编程计算磁带上最多可以存储的程序数。算磁带上最多可以存储的程序数。7算法实现题算法实现题4-5 程序存储问题程序存储问题数据输入:数据输入:第一行是第一行是2 个正整数
6、,分别表示文件个数个正整数,分别表示文件个数n和磁带的长和磁带的长度度L。接下来的。接下来的1 行中,有行中,有n个正整数,表示程序存放在磁个正整数,表示程序存放在磁带上的长度。带上的长度。结果输出结果输出:最多可以存储的程序数。最多可以存储的程序数。输入示例输入示例6 502 3 13 8 80 20输出示例输出示例5i012345x2313880208int greedy(vector x,int m)int i=0,sum=0,n=x.size();sort(x.begin(),x.end();while(i n)sum+=xi;if(sum=m)i+;else return i;ret
7、urn n;/所有的程序都没有磁带长所有的程序都没有磁带长算法实现题算法实现题4-5 程序存储问题程序存储问题i012345x238132080贪心策略:最短程序优先贪心策略:最短程序优先排序后的数据排序后的数据9算法实现题算法实现题4-6 最优服务次序问题最优服务次序问题 问题描述:问题描述:设有设有n 个顾客同时等待一项服务。顾客个顾客同时等待一项服务。顾客i需要的服务需要的服务时间为时间为ti,1=i=n。应如何安排。应如何安排n个顾客的服务次序个顾客的服务次序才能使平均等待时间达到最小才能使平均等待时间达到最小?平均等待时间是平均等待时间是n 个个顾客等待服务时间的总和除以顾客等待服务
8、时间的总和除以n。编程任务:编程任务:对于给定的对于给定的n个顾客需要的服务时间,编程计算最个顾客需要的服务时间,编程计算最优服务次序。优服务次序。10算法实现题算法实现题4-6 最优服务次序问题最优服务次序问题数据输入:数据输入:第一行是正整数第一行是正整数n,表示有,表示有n 个顾客。接下来的个顾客。接下来的1行行中,有中,有n个正整数,表示个正整数,表示n个顾客需要的服务时间。个顾客需要的服务时间。结果输出结果输出:计算出的最小平均等待时间。计算出的最小平均等待时间。输入示例输入示例1056 12 1 99 1000 234 33 55 99 812输出示例输出示例532.0011算法实
9、现题算法实现题4-6 最优服务次序问题最优服务次序问题double greedy(vector x)int i,n=x.size();sort(x.begin(),x.end();for(i=1;in;+i)xi+=xi-1;double t=0;for(i=0;in;+i)t+=xi;t/=n;return t;i0123456789x1123355569999 2348121000加加11346 101 157 256 355 589 1401 2401定义:定义:vector x;读取数据:读取数据:int n;scanf(“%d”,&n);int temp;for(int i=0;in
10、;i+)scanf(“%d”,&temp);x.push_back(temp);12算法实现题算法实现题4-7 多处最优服务次序问题多处最优服务次序问题 问题描述:问题描述:设有设有n 个顾客同时等待一项服务。顾客个顾客同时等待一项服务。顾客i需要的服务需要的服务时间为时间为ti,1=i=n。共有。共有s 处可以提供此项服务。处可以提供此项服务。应如何安排应如何安排n 个顾客的服务次序才能使平均等待时间个顾客的服务次序才能使平均等待时间达到最小达到最小?平均等待时间是平均等待时间是n个顾客等待服务时间的总个顾客等待服务时间的总和除以和除以n。编程任务:编程任务:对于给定的对于给定的n个顾客需要
11、的服务时间和个顾客需要的服务时间和s的值,编程的值,编程计算最优服务次序。计算最优服务次序。13算法实现题算法实现题4-7 多处最优服务次序问题多处最优服务次序问题数据输入:数据输入:第一行有第一行有2 个正整数个正整数n 和和s,表示有,表示有n 个顾客且有个顾客且有s 处可以提供顾客需要的服务。接下来的处可以提供顾客需要的服务。接下来的1 行中,有行中,有n个正整数,表示个正整数,表示n个顾客需要的服务时间。个顾客需要的服务时间。结果输出结果输出:最小平均等待时间。最小平均等待时间。输入示例输入示例10 256 12 1 99 1000 234 33 55 99 812输出示例输出示例33
12、614算法实现题算法实现题4-7 多处最优服务次序问题多处最优服务次序问题double greed(vector x,int s)vector st(s+1,0);vector su(s+1,0);int n=x.size();sort(x.begin(),x.end();int i=0,j=0;while(i n)stj+=xi;suj+=stj;+i,+j;if(j=s)j=0;double t=0;for(i=0;is;+i)t+=sui;t/=n;return t;i0123456789x112 33 55 56 99 99 234 812 1000排序后的数据排序后的数据st服务数组
13、服务数组01112su求和数组求和数组0111215算法实现题算法实现题4-9 汽车加油问题汽车加油问题问题描述问题描述一辆汽车加满油后可行驶一辆汽车加满油后可行驶nkm。旅途中有若干个加。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。加油,使沿途加油次数最少。编程任务编程任务对于给定的对于给定的n和和k个加油站位置,编程计算最少加油个加油站位置,编程计算最少加油次数。次数。16算法实现题算法实现题4-9 汽车加油问题汽车加油问题数据输入数据输入第第1行有行有2个正整数个正整数n和和k,表示汽车加满油后可行
14、驶,表示汽车加满油后可行驶nkm,且旅途有且旅途有k个加油站。接下来的一行中,有个加油站。接下来的一行中,有k+1个整数,表示个整数,表示第第k个加油站与第个加油站与第k-1个加油站之间的距离。第个加油站之间的距离。第0个加油站表个加油站表示出发地,汽车已加满油。第示出发地,汽车已加满油。第k+1个加油站表示目的地。个加油站表示目的地。结果输出结果输出计算出的最少加油次数。如果无法到达目的地,则输计算出的最少加油次数。如果无法到达目的地,则输出出”No Solution”。输入示例输入示例7 7 1 2 3 4 5 1 6 6输出示例输出示例 4起点起点终点终点加油站数加油站数0 1 2 3
展开阅读全文