- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《POJ贪心算法
Assignment4 贪心算法一、实习目的与要求1、掌握贪心算法的原理;2、应用贪心算法求解实际问题;4、实习题目:1328、1700、2287二、实习环境与工具操作系统:win 7开发工具:Microsoft Visual Studio 2010开发语言:C++三、实习题目题目一:1328【问题描述】 题目的意思是以x轴为分界线,上半部分海洋,为上面一些岛屿(用点表示),要求在x轴上建立一些雷达基地(每个雷达可以覆盖一定的范围),要求在覆盖所有岛屿的情况下,求所用到的最少雷达数。岛屿的坐标和雷达覆盖范围自行输入。【算法分析与设计】问题分析与设计思想 先讲岛屿的坐标按照横坐标进行排序(纵坐标跟随横坐标),然后根据雷达的覆盖范围,在每一个岛屿画圆,将其与x轴的交点的横坐标分别保存在两个数组(左右交点)中,然后从左往右依次开始比较,如果右边交点的左边坐标大于左边交点的右边坐标,则雷达数+1,如果不大于的话,还要比较其右边交点坐标是否大于左边交点的坐标(开始的时候忽略了这里,想当然的以为这种情况不存在),将右边交点坐标赋值给临时变量。2、出现的问题及解决办法1、开始的时候没有想到以岛屿为圆心画圆,找不到思路。2、忽略了右边交点可能会大于左边的(上面写的)。3、for(int i=0;in-1;i++)开始的时候越界了,写成了n。3、效率分析与改进设想代码的时间复杂度和空间复杂度都还不理想,正在想办法改进。【源代码】#include stdafx.h#includeiostream #includemath.h using namespace std;double x[1000],y[1000];int sort(double *x,double *y,int n){double temp=0;for(int i = 0;i n ;i++)for (int j = 0;j n-i-1 ;j++)if(x[j]x[j+1]){temp=x[j];x[j]=x[j+1];x[j+1]=temp;temp=y[j];y[j]=y[j+1];y[j+1]=temp;}return 0;}int main(){int n = 0 ,r = 0 ,num = 1;while (cin n r (n || r)){int sum = 1 ;bool signal =false;for (int i = 0;i n ;i++ ){cinx[i]y[i];if(y[i]r)signal=true;}if(signal){coutCase num++: -1endl; continue; }sort(x,y,n);double right[1000], left[1000];for (int i = 0; i n ;i++){right[i]=x[i]+sqrt(r*r-y[i]*y[i]);left[i]=x[i]-sqrt(r*r-y[i]*y[i]);}double temp=right[0];for(int i=0;in-1;i++){//zhelishi n-1if(left[i+1]temp){sum++;temp=right[i+1];}else if (right[i+1]temp){temp=right[i+1];}}coutCase num++: sumendl; //sum=0;}system(pause);return 0;}【运行结果】题目二:1700【问题描述】 此题讲的是N个人过河,每个人都有自己的过河时间,一条船只能承受2个人,所用时间为其中过河时间最多的,求总共最小过河时间。【算法分析与设计】问题分析与设计思想 最开始想到的是让时间最短的人依次陪每个人个过河,但是这样写的代码通不过,后来仔细想虽然回来的时间短了,但是过河每次都是时间长的,如果让时间最短和次短的依次配合的话,让最短时间的将船开回来,让时间最长和次长的过去,然后时间此短的开回来,将时间最短的载过去,时间最短的再将船开回来,依次循环。出现的问题及解决办法一开始写的是没有想到第二种情况。2、在想到第二种情况后,当考虑到还有三个人的时候,没有想到时间分配。效率分析与改进设想 【源代码】#include stdafx.h#include iostream#include algorithmusing namespace std;bool compare(int a,int b){return ab; }int time[1005];int sumtime[1005];int main(){int n=0,m=0;cinn;while(n--){int sum=0;cinm;for(int i=0;im;i++){cintime[i];}sor
您可能关注的文档
最近下载
- 【国家标准】GB∕T 35450-2017 聚碳酸酯薄膜及片材.pdf
- 医疗废物管理制度 (1).doc VIP
- 青19J2青19J3建筑专业(三):建筑用料及做法+屋面.docx
- 项目安全资料标准化实施手册 (1).pdf VIP
- 2022年成都市武侯国有资本投资运营集团有限责任公司招聘考试题库及答案解析.docx VIP
- 机械设计软件:Creo二次开发_(2).CreoAPI基础.docx VIP
- 第三十八回 及时雨会神行太保 黑旋风斗浪里白条-名著《水浒传》阅读导航+情节概括+思维导图+原文批注+阅读训练初中语文.docx VIP
- 物理性污染与防治.ppt VIP
- 1+X快递运营理论测试题.docx VIP
- 9.29事故抢险救援战评总结.ppt VIP
文档评论(0)