汽车加油问题(智力题)

题目如下:

  一辆载油500升的汽车从A开往1000公里外的B,已知汽车每公里耗油量为1升,A处有无穷多的油,其他任何地点都没有油,但该车可以在任何地点存放油以备中转,问从A到B最少需要多少油。

 

 

 

这个题想了好多天也没想出来,在网上找答案也都是基本相同的,只给出了一个结论,而没有一个详细推导过程。今天没事在家仔细

 

的推导了一下,终于有些眉目了。记录如下:

由最少耗油的要求,先得有几个前提:

1.汽车到达终点时油箱是空的。

2.路上的每一个中转点都没有剩下油。

 

 

现在画一个数轴,代表起点到终点的路径,在这个数轴上取m个点,分别记为X(1),X(2),...,X(m)。X(i)表示第i个点到终点的距

 

离。1号点为起点,m号点为终点。所以有X(1)=0,X(m)=1000。设汽车油箱的容量为A,由题目可知A=500。设S(i)表示在第i最少存放

 

多少升油,那么显然S(m)=0,而我们要求的就是S(0)。再设n(i)为从第i-1点到第i点需要的往返次数(注意,一去一回代表一次往返

 

)。好,以上就是需要定义的一些符号,下面开始推导过程:

 

从i-1点往i点运油时,最节省的情况是从i-1点出发时应该油箱装满油,然后在i点放下油后回到i-1点时油箱是空的,这时候运油的

 

效率是最高的。所以有:

S(i) = A - [X(i)-X(i-1)] + {A - 2*[X(i) - X(i-1)]}*n(i)。

上式中A - [X(i)-X(i-1)]是最后一次从i-1点到i点油箱中剩下的油;{A - 2*[X(i) - X(i-1)]}*n(i)表示在n(i)次往返过程中总共

 

在i点存下的油。把上式化简合并一下得到式(1):

S(i) = [n(i) + 1]*A - [2*n(i) + 1]*[X(i) - X(i-1)]      -----(1)

 

又因为到第i点存下的油等于第i-1点存下的油减去从i-1点到i点的总损耗,而从i-1点到i点的总损耗为[2*n(i) + 1]*[X(i) - X(i-1)],所以有下式:

S(i) = S(i-1) - [2*n(i) + 1]*[X(i) - X(i-1)]。

把(1)式带入上式则可得到式(2-1):

S(i-1) = [n(i) + 1]*A   -----(2-1)

同理有式(2-2)

S(i) = [n(i+1) + 1]*A  -----(2-2)

 

用(2-1)减去(2-2)得到式(3):

S(i-1) - S(i) = [n(i) - n(i+1)]*A      -----(3)

 

因为S(i-1) - S(i)表示的是从i-1点到i点的总损耗,而A是固定值,所以由(3)式得知,要使总损耗最小,就需要n(i) - n(i+1)最小

 

,因为S(i-1) - S(i)必然>0,所以n(i) - n(i+1)>0,且n[i]是整数,所以就有min([n(i) - n(i+1)]) = 1。所以有式(4):

n(i) - n(i+1)= 1 ==> n(i) = n(i+1) + 1   -----(4)

 

把式(4)代入式(2-2)就得到式(5):

S(i) = n(i)*A                          -----(5)

 

再把式(5)代入式(1)并化简就可以得到式(6):

X(i) - X(i-1) = A/[2*n(i) + 1]        -----(6)

 

X(i) - X(i-1)表示的相邻两点之间的距离,所以显然要达到终点的话就必须有:

 

又因为n(m)=0,即从最后一个中转点到终点是不需要往返的。再由式(4)就有:n(m-1) = 1,n(m-2) = 2, …,即有n(i) = m-i成立。我们从终点往起点回退,再由上式就有:

 

所以求出来m=8。但是m=8时,求出来的和 约等于1010.9比1000大,所以不能由式(5)直接算S(0),而应该先算S(1) = (m-1)*A = (8-1)*500 = 3500升。也就是说在第一个中转点应该要存3500升油。然后再算从第0点到第1点的损耗,由前面的计算我们可以得到X(1) = 1000 – (500 + 500/3 + 500/5 + 500/7 + 500/9 + 500/11 + 500/13) ≈ 22.433米。

所以从第0点到第1点的总耗损可以由前面的总损耗公式[2*n(i) + 1]*[X(i) - X(i-1)]求出:

[2*n(1) + 1]*(22.433 - 0) = (2*7 + 1)*22.433 = 336.495

所以总耗油量就约为 3500 + 336.495 = 3836.495升。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值