




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验五 贪心算法设计与应用一基本原理的概括贪心法是一种算法设计技术,通常用于求解最优化问题。通过一系列选择步骤来构造问题的解,每一步都是对当前部分解的一个扩展,直至获得问题的完整解。所做的每一步选择都必须满足: 1)可行的:必须满足问题的约束。 2)局部最优:当前所有可能的选择中最佳的局部选择。3)不可取消: 选择一旦做出,在后面的步骤中就无法改变了。要注意的是,贪心法不能保证总能得到最优解(一系列的局部最优选择不能保证最后得到整体最优解)二该类算法设计与实现的要点贪心算法往往效率高,一般时间复杂性为多项式阶。贪心算法一般较简单,其关键和难点在于贪心选择策略的确定,以及证明相应的贪心算法确实可求出最优解。三实验目的和要求理解贪心算法的基本原理,掌握贪心算法设计的基本方法及其应用;四实验内容(一) 加油问题(Problem Set 1702):1. 问题描述一个旅行家想驾驶汽车从城市A到城市B(设出发时油箱是空的)。给定两个城市之间的距离dis、汽车油箱的容量c、每升汽油能行驶的距离d、沿途油站数n、油站i离出发点的距离di以及该站每升汽油的价格pi,i=1,2,n。设d1=0d2dn。要花最少的油费从城市A到城市B,在每个加油站应加多少油,最少花费为多少?2. 具体要求Input输入的第一行是一个正整数k,表示测试例个数。接下来几行是k个测试例的数据,每个测试例的数据由三行组成,其中第一行含4个正整数,依次为A和B两个城市之间的距离d1、汽车油箱的容量c(以升为单位)、每升汽油能行驶的距离d2、沿途油站数n (1=n=200);第二行含n个实数d1, d2 , dn,表示各油站离出发点的距离(d1=0);第三行含n个实数p1, p2 , pn,表示各油站每升汽油的价格。同一行的数之间用一个空格隔开。Output对于每个测试例输出一行,含一个实数,表示从城市到城市所要花费的最少油费(输出的结果精确到小数点后一位)。若问题无解,则输出“No Solution”。3. 代码如下:#include#define MAX 20void look(float dis,float pir,int n,int d2,int oil)/dis距离起点距离,pir油价int i,j,k;float pirce=0.0,c1=0,x,c2;for(j=0;j=n;j+)for(i=j+1;i=n;i+)if(piri=oil)x=oil-c1;elsex=c2-c1;if(x0)x=0;pirce=pirce+pirj*x;break;c1=c1+x-(disj+1-disj)/d2);printf(%.1f,pirce);void main()int k,i,j,nMAX,cMAX,d1MAX,d2MAX,lengthMAX,flagMAX;float AMAXMAX,BMAXMAX;printf(输入测试例个数:n);scanf(%d,&k);for(i=0;ik;i+)printf(输入第%d个数据:n,i+1);flagi=0;scanf(%d %d %d %d,&d1i,&ci,&d2i,&ni);lengthi=ci*d2i;for(j=0;jni;j+)scanf(%f,&Aij);Aini=d1i*1.0;for(j=0;j0;j-)if(Aij-Aij-1lengthi)flagi=1;if(flagi=1)printf(第%d次结果:,i+1);printf(NO solution!n);elseprintf(第%d次结果:,i+1);printf(最少油费:);look(Ai,Bi,ni,d2i,ci);printf(n);printf(n);(二) 黑白点的匹配(Problem Set 1714):1. 问题描述设平面上分布着n个白点和n个黑点,每个点用一对坐标(x, y)表示。一个黑点b=(xb,yb)支配一个白点w=(xw, yw)当且仅当xb=xw和yb=yw。若黑点b支配白点w,则黑点b和白点w可匹配(可形成一个匹配对)。在一个黑点最多只能与一个白点匹配,一个白点最多只能与一个黑点匹配的前提下,求n个白点和n个黑点的最大匹配对数。2. 具体要求Input输入的第一行是一个正整数k,表示测试例个数。接下来几行是k个测试例的数据,每个测试例的数据由三行组成,其中第一行含1个正整数n(n16);第二行含2n个实数xb1, yb1,xb2, yb2, xbn, ybn, (xbi, ybi),i=1, 2, , n表示n个黑点的坐标;第三行含2n个实数xw1, yw1,xw2, yw2, xwn, ywn,(xwi, ywi),i=1, 2, , n表示n个白点的坐标。同一行的实数之间用一个空格隔开。Output对于每个测试例输出一行,含一个整数,表示n个白点和n个黑点的最大匹配对数。3. 代码如下:#include iostream.h#include math.hstruct pointdouble x,y;void sort(point *a,int n)int i,j;point p;for(i=1;i=n;i+)for(j=i+1;jaj.x|(ai.x=aj.x&(ai.yaj.y)p=ai;ai=aj;aj=p;double dis(point pointw,point pointb)double dist;dist=sqrt(pow(pointb.x-pointw.x),2)+pow(pointb.y-pointw.y),2);return dist;int main()int i,j,n,k;cinn;point *pointw=new pointn;point *pointb=new pointn;int *b=new intn;for(i=1;ipointbi.x;for(i=1;ipointbi.y;for(i=1;ipointwi.x;for(i=1;ipointwi.y;sort(pointw,n);for(i=1;i=n;i+)bi=1;int count=0;for(i=1;i=n;i+)double mindis=32767;double Min=mindis;for(j=1;j=pointwi.x&pointbj.y=pointwi.y)if(mindisdis(pointwi,poin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届广东省深圳市龙岗区中考试题猜想数学试卷含解析
- 2025年工业机器人编程与操作习题及解析
- 2025年应急局安全员资格认证题解
- 2025年建安安全员考试重点突破题及答案
- 2025年安全员C证法规题及答案
- 2025年空调维修工程师执业技能考核试题及答案解析
- 2025年金融风险管理师职业资格考试试卷及答案解析
- 2025年建筑学试题及答案解析
- 2025年婚姻家庭咨询师职业素质评定试题及答案解析
- 2025年国际贸易专家认证考核试题及答案解析
- 第一响应人应急培训
- 治未病进修总结
- 初中数学七年级上册思维导图
- 中学八年级信息技术Excel-电子表格教案
- 《认识感官》课件
- 工程伦理课程课件
- 秋季传染病预防知识讲座课件
- 055.重症超声在重症相关操作中应用专家共识
- 人教版九年级上册化学第二单元 空气和氧气(单元复习课件)
- 2024小学语文教学及说课课件:二年级上册《田家四季歌》
- GB/T 44304-2024精细陶瓷室温断裂阻力试验方法压痕(IF)法
评论
0/150
提交评论