递推法:穿越沙漠问题

吉普车试图穿越 x km 宽的沙漠,吉普车耗油率1L/km,总装油量 500L,对于 x > 500,吉普车需要设置临时储油点,以穿越沙漠。现在,我们需要对于输入的 x 值,计算最少的耗油量。其中, 0 ≤ x ≤ 3000.

在思考这道题之前,我们先考虑几个常识性问题:

     1、越往沙漠深处的储油点送油,所消耗的油量更多(在往返的路上必然会消耗更多的油量)

     2、要使总耗油量最少,那么需要使得绝对单位路径上的长度最小。

(其中,绝对路径指完全行驶的距离,即不再需要返回。

     3、要使得耗油量最少,那么我们需要满足以下条件:

         a、每次车应该满载而去,空载而归

         b、从第 i 个储油点将油送到第 i + 1个必然消耗的比从起点而始耗油量要少。

         c、在到达终点的时候,必然有:所有储油点、车上的油量均为0。

         d、储油点存储的油量必然是500的整数倍——这一点可由 3.a 推得。

     4、考虑将油从第 i 个储油点送至第 i + 1个的过程:假设需要送 n 趟,那么在最后一趟时,吉普车到达第 i + 1个储油点时,这时候,吉普车将没必要回到前面的储油点,假设这期间的距离为d,那么所在运输中所消耗的油量为 (2n - 1)d。

<
  • 13
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值