写给自己,没有代码,只有自己不理解地方的思路
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的汽油。)
- 之后的过程类似。给个图理解一下: