汽车加油问题(贪心算法)
1.问题描述:一辆汽车加满油后可行驶nkm。旅途中有若干加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。
算法设计:对于给定的n和k个加油站位置,计算最少加油次数。
数据输入:n:表示汽车加满油后可行驶nkm
k:旅途中有k个加油站
k+1个整数:表示第k个加油站与第k-1个加油站之间的距离。第0个加油站表示出发地,汽车已加满油。第k+1个加油站表示目的地。
数据输出:最少加油次数和具体在哪几个加油站加油。
例如: n=7 k=7
K+1个整数:1 2 3 4 5 1 6 6
最优值:4
2.相关代码:
#include<stdio.h>
#define M 100
int main(){
int stations[M];//八个间距
int ins; //油箱满的时候可以走的距离
int num;//中间加油站的数量
int i;
int all=0;//总的加油次数
int lv;//油箱中的油量可以走的距离
printf("请输入加油站的距离和数量\n");
scanf("%d%d",&ins,&num);
lv=ins;//油量赋初值
printf("请输入加油站间的距离\n");
for(i=0;i<num+1;i++){
scanf("%d",&stations[i]);
}
printf("加油站间的距离分别为:\n");
for(i=0;i<num+1;i++){
printf("%d ",stations[i]);
}
puts("");
for(i=0;i<num+1;i++){//如果油量可以支撑下一段路,则继续走
if(stations[i]>ins) {
printf("汽车不可能达到终点站");
return 0;
}
if(lv>=stations[i]){
lv-=stations[i];
}
else { //否则加满油
lv=ins-stations[i];
all++;
}
}
printf("需要加油的总的加油站数量\n");
printf("%d\n",all);//输出总的加油次数
}
3.问题分析与解题思路
如果要使用贪心算法解决问题,那么需要检查每一小段路程是否超过汽车满油量时的最大支撑路程。如果有超过的,那么汽车不可能走完这段路。否则,找到汽车满油量时的最大支撑路程范围内的最后一个加油站,加油后继续用此方法前进
汽车加油问题(贪心算法)相关推荐
- 汽车加油问题贪心算法c语言,汽车加油问题之贪心算法(全面分析)
一辆汽车加满油后可以行驶N千米.旅途中有若干个加油站.指出若要使沿途的加油次数最少,设计一个有 效的算法,指出应在那些加油站停靠加油.给出N,并以数组的形式给出加油站的个数及相邻距离,指出若要使沿途的 ...
- 汽车加油问题--贪心算法(算法设计与分析)
7-1 汽车加油问题 题目来源:王晓东<算法设计与分析> 一辆汽车加满油后可行驶 n公里.旅途中有若干个加油站.设计一个有效算法,指出应 在哪些加油站停靠加油,使沿途加油次数最少. 输入格 ...
- 汽车加油问题 --贪心算法
问题描述 一辆汽车加满油后可行驶nkm .旅途中有若干个加油站.设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少. 编程任务 对于给定的n和k个加油站位置,编程计算最少加油次数. 数据 ...
- 汽车加油问题 贪心算法 Java(详细注释)
目录 一.问题描述 二.分析过程 三.参考代码及运行结果 一.问题描述 二.分析过程 i :第i个加油站 i = 0:出发地 i = k:目的地(共 k+1 个站,由问题知,k = 5) x[i] : ...
- 汽车加油问题--贪心算法
一辆汽车加满油后可行驶n公里.旅途中有若干个加油站.设计一个有效算法,指出应 在哪些加油站停靠加油,使沿途加油次数最少.对于给定的n(n <= 5000)和k(k <= 1000)个加油站 ...
- C++贪心实现汽车加油问题
一.实验目的 1.掌握基于贪心的算法求解汽车加油问题的原理和贪心性质的证明. 2.掌握汽车加油问题贪心算法正确性的推导过程和设计原理. 3.掌握基于贪心的算法汽车加油问题函数的具体步骤. 4.具备运用 ...
- 「贪心算法」虚拟汽车加油问题
> 问题描述 一辆虚拟汽车加满油后可行驶 n km.旅途中有若干加油站.设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少,计算最少加油次数. > 数据输入 终端输入正整数 ...
- java 汽车加油问题_贪心算法 汽车加油问题 | 学步园
/ //一辆汽车加满油后可行驶n公里.旅途中有若干个加油站.设计一个有效 // // // n和k个加油站位置,编程计算最少加油次数.并证明算法能产生一个最优解. // //要求: ...
- 【贪心算法】虚拟汽车加油问题
算法实现题 4-9 虚拟汽车加油问题 问题描述: 一辆虚拟汽车加满油后可以行驶n km.途中有若干个加油站.设计一个有效的算法,指出应在那个加油站停靠加油,使沿途加油次数最少. 算法设计: 给定n和k ...
最新文章
- poj 1284 Primitive Roots(原根+欧拉函数)
- 插入函数c语言,线性表的插入函数
- mysql加锁语法_MySql 加锁问题
- AIR如何实现窗口顶置
- Android网络编程之一个Android下菜单系统模块的实现(客户端—添单功能(上部))
- 漫画:什么是图的最小生成树?
- 2017华为软挑——最小费用最大流(MCMF)
- c语言文献,关于计算机C语言的外文文献
- excel之筛选、删除技巧
- Java获取Excel中链接的文件
- 如何利用python计算即期利率_PYTHON计算任务收益率
- 生活大爆炸之光速可变,光速可超
- L1 正则化和L2正则化
- bowtie里的FM-index简介
- Matlab应变片仿真,一种基于Matlab/Adams联合仿真的真实路谱再现系统和方法与流程...
- [转载]中情局数千份机密文档泄露:各种0day工具、恶意程序应有尽有
- Python实现SVM的实例(包括网格调参和测试)总结综述
- 隐写术----LSB隐写
- http://www.dewen.net.cn/q/17095/SQL:用一条SQL语句统计出符合条件的内容
- 图论 最大团,最大独立集
热门文章
- python获取图像的长和宽_tensorflow之读取jpg图像长和宽实例
- Canvas学习笔记之画线
- 论文阅读笔记《Robust Point Matching via Vector Field Consensus》
- 嵌入式 -固件防复制系列【1】GD32代码读保护
- 64匹马,8个赛道,找出跑得最快的4匹马,至少比赛几场?
- 公司年会到底参不参加
- 【Python】flask框架学习 flask框架的基本使用
- 目标规划问题与LINGO求解
- BAT批处理脚本实例学习(五)局域网共享批处理安装软件
- (资讯)华为员工利用Bug越权访问机密卖给第三方,获利1.6万元,被判有期徒刑一年