穿越沙漠问题

题目:一辆吉普车穿越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;
} 

 

上一篇:Day 1 数据结构绪论


下一篇:Android Camera2 与 Camera API技术探究和RAW数据采集