文档详情

C语言_吉普车过沙漠.doc

发布:2017-06-04约1.19千字共2页下载文档
文本预览下载声明
?从终点到起点1K公里. 我门从终点开始考虑, 也就是把终点到起点是: I0……I1……I2……In 首先我们考虑是从I1到I0需要的油是500公升,也就是我门在I1的位置存放500公升的汽油才能保证车子到终点。 我门把两个I之间的距离写为S[i],耗油量为V[i]; 这样第一步我们知道了I0……I1之间 S1 500公里,V1 500公升。 下一步,从I1……I2之间,我们必须至少要从I2处向I1开两趟车子(单向)才能保证I1处的储存量500公升。 这样因为我们是从I2开向I1处,所以,来回加(双向)在一起应该至少是3趟才能保证I1处有500公升的汽油。 能保证3次往返最低的耗油量就是500公升, 那么我们来求出3次往返的500公升耗油量的距离就是:S2 500??/??3。 I0……I2的距离就是:S1+S2 500+500/3 而同时在I2处的储存油量为:V2 500公升+500公升 1000公升 继续向下考虑,从I2……I3之间,保证I2处有1000公升的汽油,我门必须要卡车最少从I3向I2开3趟(单趟),来回就是5趟。路上的耗油量是500公升,也就是我门在I3处存放1500公升汽油。 那么我们来回的距离是:S3 500/5。 I0……I3的距离是:S1+S2+S3 500+500/2+500/3。 同时I3的储存油量是:1500公升。 由此推断: 如果需要i处储存油,那么要i*500的储存量。 车子从i+1到I处(单向)的至少要i次。加上返回的次数一共是2*i—1次。 而这2*i—1次的最小耗油量是500公升。 那么Si的距离就是500/(2*i—1)。 最后i n到开始地点的 距离是1000-sum Sn i为1、2、……求他们的和,也就是前面的总路程。) 储存油:n*500。 车子至少要从起点开n+1次满油到n处。加上返回的,一共是2n+1次。 我们2n+1次的耗油量是(1000-sum Sn * 2n+1 [注:就是距离*往返次数 500和前面的500/往返次数 距离是一样的。] 我们起点的油量Vn+(1000-sum Sn * 2n+1 。 Vn就是从n点到终点I0总的需求油量。#include void main int k 1; /* 倒数第k站*/ double d 500; /*加油站距B点的距离,倒数第1站为500km */ double x 500;/*每一单边上消耗油量(也等于每一趟的距离),倒数第1站为500L */ double v 500; /*;每一个加油站的贮油量,倒数第1站为500L */ while d 1000 printf 倒数第%d站距下一站的距离为:%lf\t贮油量为:%lf\n,k,x,v ; k++; v 500.0*k; x 500.0/ 2*k-1 ; d+ x;
显示全部
相似文档