汽车加油问题 贪心算法 Java(详细注释)
目录
一、问题描述
二、分析过程
三、参考代码及运行结果
一、问题描述
二、分析过程
- i :第i个加油站
- i = 0:出发地
- i = k:目的地(共 k+1 个站,由问题知,k = 5)
- x[i] :第 i 站到 i+1 站的距离,由问题知,需定义int x[5],且x[0] = 30,x[1] = 40,...,x[4] = 50。
- n :加满油行驶的最远距离,由问题知,n = 90。
- count:一共的加油次数
- 贪心策略:每次开到尽量远的加油站加油,也就是说不得不加油的时候。如:到了一个加油站正好没油,或者到了一个加油站不加油,剩余油就不够开到下一个加油站。
三、参考代码及运行结果
public class Car {public static void greedy(int x[], int n ,int k){// 检查每相邻两个加油站的距离不超过 n,否则无解for(int i=0; i<k; i++)if(x[i] > n){System.out.println("No solution");return ;}// 一切正常,开始算法int count = 1; // 一共所需加油的次数,出发时必须加油一次System.out.println("需要在第 0 个加油站加油一次");int distance = 0;// 保存 一次可能最长行驶的距离,累加相邻距离,直到 > nfor(int i=0; i<k; i++){distance += x[i]; // 累加 x[0]~x[i] ,即一次可能最长行驶的距离if(distance > n){ // 直到加上x[i]时 一次可能最长行驶的距离 > n (不加x[i]时,<= n,即中途不用加油)count++; // 加一次油distance=x[i];// 以当前 x[i] 为起始点,重新计算distance 一次可能的最长行驶的距离System.out.printf("需要在第 %d 个加油站加油一次\n", i);}}System.out.printf("一共需要加油的总次数: %d 次\n", count);}public static void main(String[] args) {int[] x = {30,40,80,12,50};// 初始化 相邻站的距离int k = 5; // 一共的站点数,算上出发站,目的站int n = 90; // 加一次油最长行驶的距离greedy(x, n ,k);// 调用算法,计算最少的加油次数}
}
汽车加油问题 贪心算法 Java(详细注释)相关推荐
- 汽车加油问题贪心算法c语言,汽车加油问题之贪心算法(全面分析)
一辆汽车加满油后可以行驶N千米.旅途中有若干个加油站.指出若要使沿途的加油次数最少,设计一个有 效的算法,指出应在那些加油站停靠加油.给出N,并以数组的形式给出加油站的个数及相邻距离,指出若要使沿途的 ...
- 汽车加油问题--贪心算法(算法设计与分析)
7-1 汽车加油问题 题目来源:王晓东<算法设计与分析> 一辆汽车加满油后可行驶 n公里.旅途中有若干个加油站.设计一个有效算法,指出应 在哪些加油站停靠加油,使沿途加油次数最少. 输入格 ...
- 汽车加油问题 --贪心算法
问题描述 一辆汽车加满油后可行驶nkm .旅途中有若干个加油站.设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少. 编程任务 对于给定的n和k个加油站位置,编程计算最少加油次数. 数据 ...
- 汽车加油问题--贪心算法
一辆汽车加满油后可行驶n公里.旅途中有若干个加油站.设计一个有效算法,指出应 在哪些加油站停靠加油,使沿途加油次数最少.对于给定的n(n <= 5000)和k(k <= 1000)个加油站 ...
- 数学建模常用算法:启发式优化算法合辑(内含多种智能优化算法,使用java实现算法、详细注释、并进行结果可视化)
一.启发式算法介绍 启发式算法(heuristic algorithm)是相对于最优化算法提出的.一个问题的最优算法求得该问题每个实例的最优解.启发式算法可以这样定义:一个基于直观或经验构造的算法 ...
- 贪心算法(Java版本)
一.贪心算法 1.算法描述 贪心算法(Greedy algorithm),又叫做贪婪算法. 在对问题求解时,不从整体考虑,而是从问题的某一个初始解出发,每一步选择中都采取在当前状态下最好或最优的选择( ...
- 最少圆覆盖通信覆盖问题-算法分析设计-贪心算法-java实现
问题描述 假设海岸线是一条无限延伸的直线,陆地在海岸线的一侧,海洋在另外一侧.每个小岛相当于海洋侧的一个点.坐落在海岸线上的基站只能覆盖半径为d的范围.应用直角坐标系,将海岸线作为x轴,设海洋侧在x轴 ...
- Java基于优先队列的贪心算法,java
关于这篇博客 这篇博客是在我读<你不知道的JavaScript-上卷>的时候,遇到的我觉得需要记录下来的知识. 刚好又能够配合之前我写的这篇执行上下文与执行上下文栈博客中关于变量提升与函数 ...
- 贪心算法(Java)
贪心算法 文章目录 贪心算法 0.写在前面 1.贪心算法的基本要素 1.1 贪心选择性质 1.2 最优子结构性质 1.3 贪心算法与动态规划算法的差异 2.贪心算法的特点 3.贪心法的正确性证明 4. ...
最新文章
- 【2021年度训练联盟热身训练赛第二场】g2g c u l8r(python)
- SQL 查询数据打印并导出EXECL
- android include 点击事件,Android 多个include标签的监听事件处理
- mysql 查看表格scott_mysql查询学习第一天,针对scott
- Google Maps API 调用实例
- 用python画分形树的详细解析_基于Python的matplotlib库绘制分形树
- HCIE-RS--路由器交换机做整形的区别
- html css手册,CSS 参考手册
- 源码分享—《Java多线程编程核心技术》源码,Java多线程编程核心技术源码 略微有改动。
- 更好的在小学语课上用计算机,如何把小学科学课上好教育随笔
- pimple学习:源码解读
- 【Pycharm】主题背景颜色更改
- 超五类屏蔽双绞线和计算机电缆区别,超五类单屏网线和六类单屏蔽网线的区别是什么?...
- HSSFWorkbook EXCEL导出
- C++ GUI Programming with Qt4 Second Edition 之 前言
- Java实现HighCharts纯后台图表生成
- 7-7 到底是不是太胖了(10 分)
- sql server 可更新订阅 配置_更新前瞻丨前瞻内容大放送,暗部行动再次开启!
- 小黑鱼怎么样?好的平台错不了!
- C# 字符串不足位数补零
热门文章
- markman psd
- 领土局本副局长蒙贿获刑5年
- 在有n个学生的成绩表里,每条信息由姓名与分数组成,要求:1按分数高低次序,输出每个学生的名字,分数相同的为同一名次,2按名次输出每个学生的姓名与分数。
- 5G推动下,XR的需求“爆发”会来自B端还是C端?
- 自我充实自我健全 ———— 星云法师
- 学生的数学学习应当是一个生动活泼,积极主动和富有个性的过程,认真听讲,积极思考,动手实践,自主 探索,合作交流等都是学习数学的主要方式,请谈谈教师如何在教学中帮助学生养成良好的数学学习习惯(论述))
- Machine Learning Practical 爱宝课程记录week1
- 计算机专业如何谋生自己谋生,如何谋生
- 最美不过少年时,红尘走马,步步相随
- 亮相Google I/O,字节跳动是这样应用Flutter的