算法——穿越沙漠算法

写给自己,没有代码,只有自己不理解地方的思路


1. 问题描述

一辆吉普车来到1000km宽的沙漠边沿。吉普车的耗油量为1L/km,总装油量为500L。显然,吉普车必须用自身油箱中的油在沙漠中设几个临时 加油点,否则是通不过沙漠的。假设在沙漠边沿有充足的汽油可供使用,那么吉普车应在哪些地方、建多大的临的加油点,才能以最少的油耗穿过这块沙漠?

2. 问题分析

这里推荐博客园的文章https://www.cnblogs.com/bugY/archive/2011/08/19/2146180.html
这里借助它的图进行记录
来源于上述博客

  • 想要到达终点B,且汽车一次总装油量为500L,很明显最好的方法是在达到终点B时汽油刚好用完,则需要在终点前500米建立一个最少能存储500L的加油站C1。当汽车到C1加油站时汽油用完,加满500L后可以开到终点B
  • 加油站C1存储500L汽油,则需要在之前建立另外的加油站(例如C2),且由C2向C1送油,共送500L。很明显,需要两次或者两次以上(从C2到C1),才能向C1点运输500L油,这里取2次(因为汽车最多只能存储500L,而需要给加油站C1存储500L,很明显去一次是不可能加满的,ps:路上有消耗油哒),那么我们就知道了C2点的储油量应该是500L*2,也就是1000L油
  • 因此加油站C2的位置也知道了。C2到C1的距离为500/3。(解释一下: 第一趟:最极限的方法就是汽车带着500L的油从加油站C2出发,开500/3的距离到加油站C1,放下500/3L的汽油,然后回到加油站C2,此时汽车汽油刚好用完; 第二趟:汽车加满汽油,即带着500L汽油,注意此时加油站C2的1000L汽油刚好用尽。然后开500/3的距离,到达加油站C1,此时油箱内剩余500-500/3 L的油。而第一趟放下了500/3L的汽油,加起来就是加油站需要的500L的汽油。)
  • 之后的过程类似。给个图理解一下:
    在这里插入图片描述
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值