- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.13 ZOJ1161-GONE FISHING (3)采用贪心策略,每次选择鱼最多的湖钓一次鱼 对于每个湖来说,由于在任何时候鱼的数目只和约翰在该湖里钓鱼的次数有关,和钓鱼的总次数无关,所以这个策略是最优的。一共可以钓鱼time次,每次在n个湖中选择鱼最多的一个湖钓鱼。 采用贪心算法构造约翰的钓鱼计划。 可以认为约翰能从一个湖“瞬间转移”到另一个湖,即在任意一个时刻都可以从湖1到湖pos中任选一个钓一次鱼。 * 算法5.19选择鱼最多的湖钓鱼的贪心算法实现 //从湖1起到湖pos止,花费时间time(不含路程)的钓鱼计划 void greedy(int pos, int time) { if (time = 0) return; //时间已经用完 int i, j; int fish[MAXN]; int p[MAXN]; int t = 0; for (i = 0; i pos; ++i) fish[i] = f[i]; memset(p, 0, sizeof(p)); …… } * 算法5.19选择鱼最多的湖钓鱼的贪心算法实现 //在时间time内,选择鱼最多的湖钓鱼;如果鱼都没有了,就把时间放在湖1上 for (i = 0; i time; ++i) { int max = 0; //鱼最多的湖中,鱼的数量 int id = -1; //鱼最多的湖的编号 //查找鱼最多的湖中,鱼的数量和湖的编号 for (j = 0; j pos; ++j) if (fish[j] max){ max = fish[j]; id = j; } if (id != -1) //找到了,进行钓鱼处理 { ++p[id]; fish[id] -= d[id]; t += max; } //没有找到(从湖1起到湖pos全部钓完了),就把时间放在湖1上 else ++p[0]; } * 算法5.19选择鱼最多的湖钓鱼的贪心算法实现 //处理最优方案 if (t best) { best = t; //最优值 memset(plan, 0, sizeof(plan)); for (i = 0; i pos; ++i) //最优解 plan[i] = p[i]; } * 算法5.19选择鱼最多的湖钓鱼的贪心算法实现 输出钓鱼计划时,再把5乘回去,就变成实际的钓鱼时间(分钟): for (i=0; in-1; ++i) printf(%d, , plan[i] * 5); printf(%d\n, plan[n-1] * 5); printf(Number of fish expected: %d\n, best); * 有一个空格 5.14 ZOJ1171-SORTING THE PHOTOS 假如你有n(1≤n≤105)张照片。有些照片正面朝上,而有些是反面朝上。 你的任务是排序,使所有的照片朝向一致。 唯一能做的操作是,从一堆照片的上面把需要翻转的照片挑出来放成一堆,把这堆照片翻转过来,放回到原来的那堆照片上。 编写程序:采用这样的操作方法完成排序,计算最少的操作次数。 * 输入样例 输出样例 1 //测试例数量 5 UU D UU 2 5.14 ZOJ1171-SORTING THE PHOTOS 由于照片多达105张,回溯算法肯定是太慢了。 必须找到一种翻转照片的方法,方法本身就是最优的。这里面有一个技巧,从一堆照片的上面取照片是不计操作次数的,只有翻转时才计算操作次数。因此逐张照片比较,如遇到照片不同时就翻转一次,再用当前照片的朝向接着比较。 例如,样例数据UUDUU,操作步骤如下: (1)先将UU放在一边,遇到D,将UU翻转,放到原来的堆上面,成为DDDUU; (2)将DDD放在一边,遇到U,将DDD翻转,放到原来的堆上面,成为UUUUU。 朝向就变成一样,操作次数是2。 编程时,还可以简化,从第一张照片开始与下一张照片比较,如果遇到照片朝向不同,则翻转次数加1,再用不同的那张照片朝向接着与下一张比较,直到结束。 * 算法5.20 翻转照片的贪心算法实现 int i; int n; //照片的张数 char p[100000]; //存放照片 int N; //数据块的数量 scanf(%d, N); while(N--) { scanf(%d, n); for(i = 0; i n; ) {
您可能关注的文档
- 7.11_信息技术促进城乡教师专业发展工作地研究—惠东县平山一小城乡联动工作地研究_广州朱乙生(三期).doc
- 8 Hermite插值.ppt
- 8.1 3G发展与应用的论文.ppt
- 80后员工工作满意度对组织承诺影响地研究1.ppt
- ami插值法第三讲(分段线性与Hermite插值).ppt
- ansys-稳健设计.ppt
- ARM在GPS导航系统中应用的论文.doc
- ATRP及其在高分子设计中应用的论文.ppt
- Blaze View数据重地分析 2015年MapInfo中国论坛会议.docx
- Blaze View系统地分析 2015年MapInfo中国论坛会议.docx
- 动漫人物长直发女孩模块二动漫人物头部的造型94课件讲解.pptx
- 2025至2030中国果汁饮料行业细分市场及应用领域与趋势展望研究报告.docx
- 2025年新能源能源合同管理行业用户体验分析.docx
- 存货采购业务李莹莹21课件讲解.pptx
- 苏教版四年级数学第七册平行和相交优秀教学教案.docx
- 传承美德,做文明学生班会.pptx
- 中小学开学疫情防控第一课安全教育教案.docx
- 2025年新能源能源合同管理行业趋势报告.docx
- 2025至2030中国超市行业市场深度调研及投资策略及有效策略与实施路径评估报告.docx
- 2025至2030中国白酒零售行业市场运行分析及投资价值评估报告.docx
最近下载
- 2025医保政策培训(1).pptx VIP
- 2025年北京市自来水集团有限责任公司校园招聘笔试备考试题及答案解析.docx VIP
- Fujifilm富士相机X-T5用户手册.pdf
- 口袋妖怪梦的光点全图鉴.docx
- 东南大学出版社孙志忠版《数值分析解析》习题答案.pdf VIP
- 痰诱导检查课件.pptx VIP
- 中南林业科技大学涉外学院《高等数学A》2025-2026学年期末考试试卷(A)卷.docx VIP
- 人工髋关节置换术术后护理.pptx VIP
- 中南林业科技大学《高等数学A》2025-2026学年期末考试试卷(A)卷.docx VIP
- 【浅析幼儿园安全教育现状及改进对策研究—以A幼儿园为例6000字】.docx VIP
原创力文档


文档评论(0)