【贪心算法】虚拟汽车加油问题
算法实现题 4-9 虚拟汽车加油问题
问题描述:
一辆虚拟汽车加满油后可以行驶n km。途中有若干个加油站。设计一个有效的算法,指出应在那个加油站停靠加油,使沿途加油次数最少。
算法设计:
给定n和k个加油站位置,计算最少加油次数。
数据输入:
第一行有两个整数n和k,表示汽车加满油后可行驶n km,且路途中有k个加油站。接下来的一行中有k+1个整数,表示第k个加油站与k-1个加油站之间的距离。第0个加油站表示处出发地,汽车已加满油,第k+1个加油站便是目的地。
输出结果:
将计算的最少加油次数输出,如果无法到达目的地,则输出“No Solution”
input
7 7
1 2 3 4 5 1 6 6
output
4
这张图片解释的很好,省去了好多话。
贪心选择性:
贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。
这是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。
最优子结构:
当一个问题的最优解包含其子问题的最优解时,称此问题具有最有子结构性质。
基本步骤
从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快的地求得更好的解。当达到算法中的某一步不能再继续前进时,算法停止。
根据一个贪心选择性,每当到达一个加油站的时候,都要进行一次判断,看看剩余的油量能不能维持到下一个加油站。
如果可以的话,接着前行;如果不行的话,在当前加油站加满油在出发,此时更新油箱数据为已满。
#include<bits/stdc++.h>
using namespace std;int main() {int n,k;cin>>n>>k;int a[k+1];for(int i=0; i<k+1; i++)cin>>a[i];bool f=0;int sum=0,gas=n;//gas表示当前的油还可以走多少kmfor(int i=0; i<k+1; i++) {if(n<a[i]) f=1;if(gas<a[i]) {sum++;gas=n;}gas=gas-a[i];}if(f)cout<<"No Solution\n";elsecout<<sum<<endl;return 0;
}
【贪心算法】虚拟汽车加油问题相关推荐
- c++用贪心算法解决汽车加油问题
汽车加油问题 Time Limit: 1000 ms Memory Limit: 65536 KiB 一辆汽车加满油后可行驶n公里.旅途中有若干个加油站.设计一个有效算法,指出应在哪些加油站停靠加油, ...
- 贪心算法之汽车加油问题
场景一.一辆汽车加满油后可行驶n公里.旅途中有若干个加油站.应在哪些加油站停靠加油,使沿途加油次数最少. 汽车行驶过程中,不到万不得已不加油,应走到自己能走到并且离自己最远的那个加油站,在那个站加满油 ...
- 虚拟汽车加油问题C语言——For初学者
虚拟汽车加油问题–C语言 问题描述: 一辆虚拟汽车加满油后可行驶 n km.旅途中有若干加油站.设计一个有效算法,指出应该在那些加油站停靠加油,使沿途加油次数最少.并证明算法能产生一个最优解. 算法设 ...
- 「贪心算法」虚拟汽车加油问题
> 问题描述 一辆虚拟汽车加满油后可行驶 n km.旅途中有若干加油站.设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少,计算最少加油次数. > 数据输入 终端输入正整数 ...
- 贪心法求解汽车加油问题
文章目录 问题内容 贪心法思想 问题分析 代码 结果展示 遇到的问题 问题内容 已知一辆汽车加满油后可行驶d(如d=7)km,而旅途中有若干个加油站.编写一个实验程序指出应在哪些加油站停靠加油,使加油 ...
- 汽车加油c语言作业,算法作业—汽车加油问题
一辆汽车加满油后可以行驶 N 千米. 旅途中有若干个加油站. 指出若要使沿途的加油次 数最少,设计一个有效的算法,指出应在那些加油站停靠加油. 给出 N ,并以数组的形式给出加油站的个数及相邻距离,指 ...
- 3.Python算法之贪心算法思想
贪心算法 1.什么是贪心算法 2.贪心算法的特点和思路 3.贪心算法的缺点 4.贪心算法的基本思路 5.贪心算法的基本过程 6.贪心算法解决"找零"问题 6.贪心算法解决" ...
- 算法分析与设计实验报告——实现汽车加油问题
算法分析与设计实验报告--实现汽车加油问题 目录: 算法分析与设计实验报告--实现汽车加油问题 一. 实验目的 二.实验要求 三. 实验原理 四. 实验过程(步骤) 五. 运行结果 六.实验分析与讨论 ...
- C++贪心实现汽车加油问题
一.实验目的 1.掌握基于贪心的算法求解汽车加油问题的原理和贪心性质的证明. 2.掌握汽车加油问题贪心算法正确性的推导过程和设计原理. 3.掌握基于贪心的算法汽车加油问题函数的具体步骤. 4.具备运用 ...
最新文章
- ubuntu g++编译32位应用
- 计算机jsp外文文献,计算机 JSP web 外文翻译 外文文献 英文文献.doc
- 【EventBus】Subscribe 注解分析 ( Subscribe 注解属性 | threadMode 线程模型 | POSTING | MAIN | MAIN_ORDERED | ASYNC)
- Docker安装配置Nginx
- VTK:参数化超环形用法实战
- 【WebPack】引入Vue;认识Plugin;使用uglifyjs丑化JS代码;搭建本地服务器;生产开发环境配置文件的抽离
- kotlin 16进制_Kotlin程序将八进制数转换为十进制数
- 国内开源社区软件 PHPWind 团队已解散
- mysql replace 不区分大小写_mysql 不区分大小写的解决
- java中的各个数据结构区别
- 当金蝶BOS开发网版主啦,纪念下!^_^
- 在 ML2 中配置 VXLAN - 每天5分钟玩转 OpenStack(110)
- 利用token 防止表单重复提交
- zigbee协议栈-端点
- mysql 导出数据到txt文件_mysql 导出数据到txt文件
- 超女复活赛,明星大补考
- 浅谈对二分查找最大次数的理解
- 城市数据大脑:小汽车儿堵成翔?NONONO!
- 计算机电子表格课程导入,又到了每年此刻,教你把课程表导入日历
- Quorum NWR算法
热门文章
- 2021冬-不靠谱的老板-使用 Siri 运行快捷指令
- CSS浮动、定位总结
- csgo调哪个会流畅_CS GO粉丝看过来,雷蛇灵刃15精英版让你轻松感受300FPS的畅快...
- vue 刷新界面 解决闪屏和iOS失效问题
- 扫描图片怎么转换成文字
- win10+Ubuntu双系统 Easybcd安装
- 安利一个小巧的事件提醒Chrome 插件:talking clock
- 大四学生“毕业焦虑”“迷茫”,想做软件测试岗,要如何系统的学习
- android 闪屏拉伸,App设计体系之引导页/启动页/闪屏
- php怎么点击确认收货,Ecshop的recieve.php邮件自动确认收货BUG如何修正