穿越沙漠问题

题目:一辆吉普车穿越1000km的沙漠。吉普车的总装油量为500L,耗油率为1L/km。由于沙漠中没有油库,必须先用这辆车在沙漠中建立临时油库。若吉普车用最少的耗油量穿越沙漠,应在哪些地方建立油库,以及各处存储的油量是多少?

思路:从终点往前推。距离终点500km应有一个加油站,油量为500L,这样当吉普车到达该加油站时,能直接到达终点,并且油刚好用完(吉普车达到该加油站时也正好用完之前的油)。然后思考第2个加油站,从刚刚的加油站往前推,吉普车要运500L的油放在第1个加油站,必然需要来回运,至少需要走3段路。要想让这段路尽量长,就要多耗油,最多能耗500L油,500L油能走500km,每段走500/3km,所以,第2个加油站的油量为500L+500L(运到第1个加油站的油量+路上耗油),距离终点500km+500/3km……

#include<iostream>
using namespace std;

int main(){
	cout<<"从终点往起点:"<<endl;
	int k=1,oil=500,dis=500;
	int x=2*k-1;//走多少段路 ,来回运 
	while(dis<1000){
		cout<<"第"<<k<<"个加油站:共"<<oil<<"L油,距离终点"<<dis<<"km"<<endl;
		k++;
		x=2*k-1;
		oil=oil+500;
		dis=dis+500/x;
	}
	if(dis>=1000){
		oil=oil-500;
		dis=dis-500/x;
		
		oil=oil+(1000-dis)*(2*k-1);
		dis=1000;
		cout<<"第"<<k<<"个加油站:共"<<oil<<"L油,距离终点"<<dis<<"km"<<endl;
	}
	return 0;
} 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个有思想的逗号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值