第4章-贪心算法-习题PPT格式课件下载.ppt
- 文档编号:15040903
- 上传时间:2022-10-27
- 格式:PPT
- 页数:38
- 大小:474KB
第4章-贪心算法-习题PPT格式课件下载.ppt
《第4章-贪心算法-习题PPT格式课件下载.ppt》由会员分享,可在线阅读,更多相关《第4章-贪心算法-习题PPT格式课件下载.ppt(38页珍藏版)》请在冰豆网上搜索。
接下来的1行中,有行中,有n个正整数,表示程序存放在磁个正整数,表示程序存放在磁带上的长度。
带上的长度。
结果输出结果输出:
最多可以存储的程序数。
输入示例输入示例650231388020输出示例输出示例5i012345x2313880208intgreedy(vectorx,intm)inti=0,sum=0,n=x.size();
sort(x.begin(),x.end();
while(in)sum+=xi;
if(sum=m)i+;
elsereturni;
returnn;
/所有的程序都没有磁带长所有的程序都没有磁带长算法实现题算法实现题4-5程序存储问题程序存储问题i012345x238132080贪心策略:
最短程序优先贪心策略:
最短程序优先排序后的数据排序后的数据9算法实现题算法实现题4-6最优服务次序问题最优服务次序问题问题描述:
设有设有n个顾客同时等待一项服务。
顾客个顾客同时等待一项服务。
顾客i需要的服务需要的服务时间为时间为ti,1=i=n。
应如何安排。
应如何安排n个顾客的服务次序个顾客的服务次序才能使平均等待时间达到最小才能使平均等待时间达到最小?
平均等待时间是平均等待时间是n个顾个顾客等待服务时间的总和除以客等待服务时间的总和除以n。
对于给定的对于给定的n个顾客需要的服务时间,编程计算最优个顾客需要的服务时间,编程计算最优服务次序。
服务次序。
10算法实现题算法实现题4-6最优服务次序问题最优服务次序问题数据输入:
第一行是正整数第一行是正整数n,表示有,表示有n个顾客。
接下来的个顾客。
接下来的1行行中,有中,有n个正整数,表示个正整数,表示n个顾客需要的服务时间。
个顾客需要的服务时间。
计算出的最小平均等待时间。
输入示例输入示例1056121991000234335599812输出示例输出示例532.0011算法实现题算法实现题4-6最优服务次序问题最优服务次序问题doublegreedy(vectorx)inti,n=x.size();
for(i=1;
in;
+i)xi+=xi-1;
doublet=0;
for(i=0;
+i)t+=xi;
t/=n;
returnt;
i0123456789x11233555699992348121000加加1134610115725635558914012401定义:
定义:
vectorx;
读取数据:
intn;
scanf(“%d”,&
n);
inttemp;
for(inti=0;
i+)scanf(“%d”,&
temp);
x.push_back(temp);
12算法实现题算法实现题4-7多处最优服务次序问题多处最优服务次序问题问题描述:
共有。
共有s处可以提供此项服务。
应处可以提供此项服务。
应如何安排如何安排n个顾客的服务次序才能使平均等待时间达个顾客的服务次序才能使平均等待时间达到最小到最小?
平均等待时间是平均等待时间是n个顾客等待服务时间的总和个顾客等待服务时间的总和除以除以n。
对于给定的对于给定的n个顾客需要的服务时间和个顾客需要的服务时间和s的值,编程的值,编程计算最优服务次序。
计算最优服务次序。
13算法实现题算法实现题4-7多处最优服务次序问题多处最优服务次序问题数据输入:
第一行有第一行有2个正整数个正整数n和和s,表示有,表示有n个顾客且有个顾客且有s处可以提供顾客需要的服务。
接下来的处可以提供顾客需要的服务。
接下来的1行中,有行中,有n个个正整数,表示正整数,表示n个顾客需要的服务时间。
最小平均等待时间。
输入示例输入示例10256121991000234335599812输出示例输出示例33614算法实现题算法实现题4-7多处最优服务次序问题多处最优服务次序问题doublegreed(vectorx,ints)vectorst(s+1,0);
vectorsu(s+1,0);
intn=x.size();
inti=0,j=0;
while(in)stj+=xi;
suj+=stj;
+i,+j;
if(j=s)j=0;
is;
+i)t+=sui;
i0123456789x11233555699992348121000排序后的数据排序后的数据st服务数组服务数组01112su求和数组求和数组0111215算法实现题算法实现题4-9汽车加油问题汽车加油问题问题描述问题描述一辆汽车加满油后可行驶一辆汽车加满油后可行驶nkm。
旅途中有若干个加。
旅途中有若干个加油站。
设计一个有效算法,指出应在哪些加油站停靠油站。
设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。
加油,使沿途加油次数最少。
编程任务编程任务对于给定的对于给定的n和和k个加油站位置,编程计算最少加油个加油站位置,编程计算最少加油次数。
次数。
16算法实现题算法实现题4-9汽车加油问题汽车加油问题数据输入数据输入第第1行有行有2个正整数个正整数n和和k,表示汽车加满油后可行驶,表示汽车加满油后可行驶nkm,且旅途有且旅途有k个加油站。
接下来的一行中,有个加油站。
接下来的一行中,有k+1个整数,表示个整数,表示第第k个加油站与第个加油站与第k-1个加油站之间的距离。
第个加油站之间的距离。
第0个加油站表个加油站表示出发地,汽车已加满油。
第示出发地,汽车已加满油。
第k+1个加油站表示目的地。
个加油站表示目的地。
结果输出结果输出计算出的最少加油次数。
如果无法到达目的地,则输出计算出的最少加油次数。
如果无法到达目的地,则输出”NoSolution”。
输入示例输入示例7712345166输出示例输出示例4起点起点终点终点加油站数加油站数01234567812345166x17算法实现题算法实现题4-9汽车加油问题汽车加油问题intgreedy(vectorx,intn)intj,i,s,sum=0,k=x.size();
for(j=0;
jn)coutNoSoultionendl;
return-1;
for(i=0,s=0;
in)sum+,s=xi;
returnsum;
k01234567x12345166i=310i=49i=612i=712起点起点终点终点加油站数加油站数01234567812345166x18算法实现题算法实现题4-9汽车加油问题汽车加油问题读取数据:
intt,n,k;
scanf(%d%d,&
n,&
k);
i=0)printf(%dn,temp);
19算法实现题算法实现题4-10区间覆盖问题区间覆盖问题问题描述:
设设x1,x2,.,xn是实直线上的是实直线上的n个点。
用固定长度个点。
用固定长度的闭区间覆盖这的闭区间覆盖这n个点,至少需要多少个这样的固定个点,至少需要多少个这样的固定长度闭区间长度闭区间?
设计解此问题的有效算法。
对于给定的实直线上的对于给定的实直线上的n个点和闭区间的长度个点和闭区间的长度k,编,编程计算覆盖点集的最少区间数。
程计算覆盖点集的最少区间数。
20算法实现题算法实现题4-10区间覆盖问题区间覆盖问题数据输入:
第一行有第一行有2个正整数个正整数n和和k,表示有,表示有n个点,且固定长个点,且固定长度闭区间的长度为度闭区间的长度为k。
接下来的1行中,有行中,有n个整数,个整数,表示表示n个点在实直线上的坐标(可能相同)。
个点在实直线上的坐标(可能相同)。
最少区间数。
输入示例输入示例7312345-26输出文件示例输出文件示例30123456-2-1012345621算法实现题算法实现题4-10区间覆盖问题区间覆盖问题intgreedy(vectorx,intk)inti,sum=1,n=x.size();
inttemp=x0;
/区间的起始位置区间的起始位置for(i=1;
ik)sum+,temp=xi;
0123456-2-1012345622算法实现题算法实现题4-12删数问题删数问题问题描述:
给定给定n位正整数位正整数a,去掉其中任意,去掉其中任意kn个数字后,剩下个数字后,剩下的数字按原次序排列组成一个新的正整数。
对于给定的的数字按原次序排列组成一个新的正整数。
对于给定的n位正整数位正整数a和正整数和正整数k,设计一个算法找出剩下数字组成,设计一个算法找出剩下数字组成的新数最小的删数方案。
的新数最小的删数方案。
对于给定的正整数对于给定的正整数a,编程计算删去,编程计算删去k个数字后得到的个数字后得到的最小数。
最小数。
23算
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 贪心 算法 习题
![提示](https://static.bdocx.com/images/bang_tan.gif)