版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验五 贪心算法设计与应用一基本原理的概括 贪心法是一种算法设计技术,通常用于求解最优化问题。 通过一系列选择步骤来构造问题的解, 每一步都是对当前部分解的一个扩展, 直至获得 问题的完整解。所做的每一步选择都必须满足:1)可行的:必须满足问题的约束。2)局部最优:当前所有可能的选择中最佳的局部选择。3)不可取消 : 选择一旦做出,在后面的步骤中就无法改变了。 要注意的是, 贪心法不能保证总能得到最优解 (一系列的局部最优选择不能保证最后得 到整体最优解)二该类算法设计与实现的要点 贪心算法往往效率高, 一般时间复杂性为多项式阶。 贪心算法一般较简单, 其关键和难 点在于贪心选择策略的确定,以
2、及证明相应的贪心算法确实可求出最优解。三实验目的和要求理解贪心算法的基本原理,掌握贪心算法设计的基本方法及其应用;四实验内容(一 ) 加油问题( Problem Set 1702 ):1. 问题描述 一个旅行家想驾驶汽车从城市 A 到城市 B(设出发时油箱是空的) 。给定两个城市之间 的距离 dis 、汽车油箱的容量 c 、每升汽油能行驶的距离 d、沿途油站数 n、油站 i 离出 发点的距离 di 以及该站每升汽油的价格 pi,i=1,2, ,n 。设d1=0d2 dn 。 要花最少的油费从城市 A 到城市 B,在每个加油站应加多少油,最少花费为多少?2. 具体要求Input 输入的第一行是一
3、个正整数 k,表示测试例个数。接下来几行是 k 个测试例的数据,每 个测试例的数据由三行组成,其中第一行含 4 个正整数,依次为 A 和 B 两个城市之间 的距离 d1、汽车油箱的容量 c(以升为单位) 、每升汽油能行驶的距离 d2、沿途油站数 n (1=n=200) ;第二行含 n 个实数 d1, d2 , , dn,表示各油站离出发点的距离( d1=0); 第三行含 n个实数 p1, p2 , pn,表示各油站每升汽油的价格。同一行的数之间用一个 空格隔开。Output 对于每个测试例输出一行, 含一个实数, 表示从城市到城市所要花费的最少油费 (输 出的结果精确到小数点后一位) 。若问题
4、无解,则输出“ 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+)三Eqxszd+0一d H 0一 d 宀宀OHXOVX)七-QCN0UX SO宀-LO-OUX(=0夬CXI。)七zp/ss_p-ss_pll2。._艾(mdv 曰上d)(+土CHVl+hd04OL* 曰 LP 呂二 u=w 宀二 m_03-J%=u
5、eos(+r曰 uvoUD04兰2二。=幕一二二UO3兰CXIpoauQoa-曰 LPO3-P% P% P% p%=ueoso=6 很二土-=三直懸J p%緯=)上u_d(+土 三 v_o.!l)04=03-=p%=ueosK=s蠢士电Mflr/緯 =u_dXXVIAI=xl/l=xl/lroo匸xxo_d-JL.%=lu_d 宀 Mcxlp/ss-p-L+fp)-x+QHL。for(j=0;j0;j-)if(Aij-Aij-1lengthi) flagi=1;if(flagi=1)printf( 第 %d 次结果: ,i+1); printf(NO solution!n);elseprint
6、f( 第 %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 个白点和
7、n 个黑点的最大匹配对数。2. 具体要求Input输入的第一行是一个正整数 k,表示测试例个数。接下来几行是k 个测试例的数据,每个测试例的数据由三行组成, 其中第一行含 1个正整数 n(n16) ;第二行含 2n 个实数 xb1, yb 1,xb 2, yb2, xbn, ybn, (xbi, yb i), i=1, 2, , n表示 n个黑点的坐标;第三行含 2n个实数 xw1, yw1 ,xw 2, yw2, xwn, yw n,(xw i, yw i) ,i=1, 2, , n表示 n个白点的坐标。 同一行的实数之间用一个空格隔开。Output对于每个测试例输出一行,含一个整数,表示
8、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.
9、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,point
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年云南省公务员笔试高频考点卷
- 2025年护士规范行为试题及答案
- 2025年小学二年级数学上学期计算能力测试试卷
- 2025年语文选班长试题及答案
- 2025年冷冲压工艺试题及答案
- 2025年护理与礼仪试题及答案
- 2025年小学三年级英语上学期单词拼写测试卷
- 2025年小学六年级道德与法治上学期模拟卷
- 根据环境光调整相对孔径的技术规范
- 2025特定设备购销合同
- 2025设备租赁合同补充协议范本设备租赁合同补充协议书
- 2025年内蒙古能源行业分析报告及未来发展趋势预测
- 浙江省杭州市2026届高三上学期11月一模试题 语文 含解析
- 2025-2026学年苏少版七年级综合实践活动上册(全册)教学设计(附目录)
- 全国大学生职业规划大赛《运动训练》专业生涯发展展示【高职(专科)】
- 腰椎骨折康复与护理
- 2025年韶关市(中小学、幼儿园)教师招聘考试题库及答案
- 小学法制教育及安全课件下载
- 2025普陀区属国有企业招聘18人备考参考试题及答案解析
- 2025至2030全球及中国油气田设备和服务行业产业运行态势及投资规划深度研究报告
- 学堂在线 护理研究方法 期末考试答案
评论
0/150
提交评论