贪心算法解决汽车加油问题
文章目录
- 1. 何为贪心算法
- 2. 贪心算法的特点
- 3. 汽车加油问题
- 问题描述
- 图解
- 代码实现
- 小结
1. 何为贪心算法
贪心算法又称贪婪算法,是指在对问题求解时,总是做出在当前步骤看来是最好的选择。也就是说,不从整体最优上加以考虑,所做出的是在某种意义上的局部最优解。
2. 贪心算法的特点
- 贪心策略的选择只跟当前有关,跟前面的状态没有关系;
- 贪心算法通过迭代把总问题分解为若干个子问题,通过求解子问题,然后把子问题最优解合成总问题的最优解;
- 贪心算法可以归结为每次求最大值(最小值)
3. 汽车加油问题
问题描述
一辆汽车加满油一次可以跑300公里,现该车在第一个加油站出发时加满油,然后需要陆续经过间隔为[150,180,120,100,280,160]的加油站,指出在哪些油站加油,可以加油次数最少,算出加油次数。
意即该汽车一次最多跑300公里,第一次在起点加满油,途径的加油站间隔为[150,180,120,100,280,160],求加油最少次数。
图解
代码实现
def oil(n,distance):i=1 #起始站加油算第一次count=0 #当前站与下一站的距离for one in distance:count+=one #试着继续累加公里数,尽量跑最长距离if n<count: #加满油开始持续跑,超过当前加油距离累加公里数print('%d公里开始处加油'%(one))#累加距离等于或超过一次跑最长距离,要加油了count=one #加满油,从新开始累计跑的距离i+=1 #计加油次数return i
n=300
dis=[150,180,120,100,280,160] #要求距离间隔都小于n,否则汽车中途要抛锚了
#dis=[150,60,50,180,120,100,280,160]
num=oil(n,dis)
print('该车最少要加油%d次'%(num))
结果:
小结
- 加满油每跑一次都算出最长可跑的距离,最后把所有加油次数累加,求得最少加油次数;
- 每加油跑一次求局部最长值,累计加油跑了多少次,就可以求得跑完路程的局部最优解,满足贪心算法的思路;
- 该算法直接给出了加油站之间的距离,并保证了加油站之间的距离都小于汽车一次加满油跑的距离,否则该算法会存在与事实不符问题(汽车容易没油,半路抛锚)。
贪心算法解决汽车加油问题相关推荐
- c++用贪心算法解决汽车加油问题
汽车加油问题 Time Limit: 1000 ms Memory Limit: 65536 KiB 一辆汽车加满油后可行驶n公里.旅途中有若干个加油站.设计一个有效算法,指出应在哪些加油站停靠加油, ...
- 贪心算法之汽车加油问题
场景一.一辆汽车加满油后可行驶n公里.旅途中有若干个加油站.应在哪些加油站停靠加油,使沿途加油次数最少. 汽车行驶过程中,不到万不得已不加油,应走到自己能走到并且离自己最远的那个加油站,在那个站加满油 ...
- 部分背包的贪婪算法 java_使用JAVA实现算法——贪心算法解决背包问题
packageBasePart;importjava.io.BufferedReader;importjava.io.FileInputStream;importjava.io.IOException ...
- 用贪心算法解决马踏棋盘问题
用贪心算法解决马踏棋盘问题 参考文章: (1)用贪心算法解决马踏棋盘问题 (2)https://www.cnblogs.com/Allen-win/p/7095293.html 备忘一下.
- 使用贪心算法解决最小生成树问题。
使用贪心算法解决最小生成树问题. #include<iostream> #include<algorithm> using namespace std; const int M ...
- 背包问题 贪心算法 java_JS基于贪心算法解决背包问题
前面我们分享了关于js使用贪心算法解决找零问题,本文我们接着为大家介绍JS基于贪心算法解决背包问题. 贪心算法:在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做 ...
- C语言会场安排问题贪心算法,贪心算法解决会场安排问题多处最优服务次序问题(含源代码).doc...
贪心算法解决会场安排问题多处最优服务次序问题(含源代码) 西 安年月日-,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源.每个活动i都有一个要求使用该资源 ...
- Python项目:The Ship Rendezvous Problem,利用贪心算法解决船舶交会问题
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Python利用贪心算法解决船舶交会问题 1 Introduction 2 Python Task Greedy Heuristic ...
- 装箱问题c语言函数,C语言基于贪心算法解决装箱问题的方法
本文实例讲述了C语言基于贪心算法解决装箱问题的方法.分享给大家供大家参考,具体如下: 问题描述: 有一些箱子,容量为V,同时有n个物品,每个物品有一个体积(小于等于箱子容量),要求将物品全部装入箱子中 ...
- 贪心算法解决活动安排-Python实现(排序+贪心选择)
贪心算法解决活动安排 问题 问题概述 分析问题 解决问题 编程 编程流程以及数据类型选择 发现问题以及解决 最终实现 总结 程序缺陷以及完善 解题心路历程 问题 问题概述 设有n个活动的集合E={1, ...
最新文章
- 科技公司开始重视AI伦理,他们都是怎么做的?
- 醒来觉得甚是爱你。--朱生豪
- C++的cout高阶格式化操作
- matlab中如何添加注释
- Java有序表查找:折半查找、二分查找、差值查找和斐波那契查找
- 【BZOJ3143】游走,概率计算+高斯消元
- ldap java 对象 存储_java - 修改UID在LDAP存储库 - SO中文参考 - www.soinside.com
- 蓝桥杯基础练习十六进制转十进制
- 开源 Android pdf 阅读器开发总结
- Symfony2Book04:Doctrine01-介绍模型(Model)
- 剑指 Offer II 024. 反转链表
- 38. Element cloneNode() 方法
- java矩形类_Java定义矩形类
- 拼多多如何拉到足够的人去砍价,砍成一台iPhone12需要多少人?
- 了解HTTP和HTPS的S之差
- 华为计算机系统叫什么,华为MateBook操作系统是什么
- 浙江大学计算机考研2020,浙江大学计算机考研经验分享
- 理解Mybatis一级缓存,以及如何真正使用到一级缓存
- android正确释放webview,解决Android WebView内存释放
- 简述html的文档基本结构,【简答题】简述 HTML 文档的基本结构。