收藏 分享(赏)

贪心算法-旅行规划问题.doc

上传人:weiwoduzun 文档编号:2976367 上传时间:2018-10-01 格式:DOC 页数:4 大小:58.50KB
下载 相关 举报
贪心算法-旅行规划问题.doc_第1页
第1页 / 共4页
贪心算法-旅行规划问题.doc_第2页
第2页 / 共4页
贪心算法-旅行规划问题.doc_第3页
第3页 / 共4页
贪心算法-旅行规划问题.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、上机 04 实验名称1、 问题描述二、旅行规划问题G 先生想独自驾驶汽车从城市 A 到城市 B。从城市 A 到城市 B 的距离为 dkm。汽车油箱的容量为 c 升。每升汽车能行驶 ekm。出发点每升汽油的价格为 p 元。从城市 A 到城市 B 沿途有 n 个加油站。第 i 个加油站距出发点的距离为 dikm,油价为每升 pi 元。请利用贪心算法,规划如何加油才能使旅行的费用最省,编程实现该算法并证明算法的正确性。2、 算法设计思想贪心算法3、 算法过程描述贪心选择性质证明(1)当油箱中的油不够到达最近的加油站时此题无解。(2)当油箱的容量与油耗的比够到每一个加油站时此题有解。最优解即为用最便宜

2、的油价将车开到终点,所以需要在保证到达下一个加油站时,油箱中的油够用。记录在每一个加油站的加油量和油价,汇总后的价格即为最优解。4、 算法实现及运行结果#include #include #include using namespace std;typedef struct double pos;double price;double fillc; gasstation;gasstation gasst502;bool cmp(gasstation a, gasstation b) if(a.pos = (D - gasstcurstnum.pos) double dist = D - gas

3、stcurstnum.pos;double needgas = dist / Davg - curgas;curcost += needgas * gasstcurstnum.price;gasstcurstnum.fillc = needgas;printf(“n 最小花费为: %.2lfn“, curcost);printf(“n 每个加油站的加油量为: n“);for(int i = 0; i N; i+) printf(“%.2lfn“,gassti.fillc);return 0;if(tag gasstcurstnum.fillc = needgas;curcost += (needgas * gasstcurstnum.price);double dist = gasstcheapestnum.pos - gasstcurstnum.pos; curgas = Cmax - dist / Davg;curstnum = cheapestnum;else if(!tag) printf(“最大行驶距离为:%.2lfn“,gasstcurstnum.pos + maxrundis);return 0;return 0;5、 算法复杂度分析及算法改进时间复杂度 O(n) :O(n*log2(n)。空间复杂度 S(n) = n。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 解决方案

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报