贪心算法之汽车加油问题

场景一、一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。应在哪些加油站停靠加油,使沿途加油次数最少

汽车行驶过程中,不到万不得已不加油,应走到自己能走到并且离自己最远的那个加油站,在那个站加满油后,将那个加油站作为新的起点,再按照同样的方法递归下去。

场景二、在一个固定长度的路线上,有多个加油站,而且各个加油站的油价不总是相同,现让油箱为空的一辆车行驶完这条路线,怎样能使所花费的油钱最少。

汽车到一个加油站,可能有以下几种状态:

1.油箱中还有油,这是已经花出去的钱,无法改变,所以要充分利用这些油,看看能不能在油花完之前找到更低价的站。如果有比当前站更低价的,就开过去;否则,只能在当前站加油。

2.如果在当前站加油,加多少才最省钱呢?显然,加得越少越好,如果不用把油箱加满就可以找到比当前站更低价的站,那就是最好情况,即找到满油箱可到达范围之内的最近的一个比当前站低价的站,加了相应的油之后开过去,到达时正好把油花完,这样高价油的用量最省。

3.如果满油箱可到达范围之内没有比当前站低价的站,即在最大范围内,当前站最低价,那么当然是把最低价油加满(相同距离最省钱),下一站应该去该范围内的次低价站,这样,就算下一站要加油,也是那时所以可能里最低价的。

4.如果满油箱可到达范围之内都没有加油站的话,即上述第2个问题,那么无法到达终点,最远行驶距离为当前站加上把满油耗尽所能行驶的距离。

如果到达下一站,就重复上述判断,这样就能保证总是占最大的便宜。总体思想就是,想尽一切办法找最便宜的加油站,并使开到那一站时油正好花完,若当前站最便宜,就把油加满接着找最便宜的站,这就是“贪心”的精髓。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值