储油点
一辆重型卡车预穿过长度大于1000公里小于1500公里的沙漠,卡车耗油为1升/公里,卡车总载油能力为500升。显然卡车装一次油是过不了沙漠的,因此司机必须设法在沿途建立几个储油点,使卡车能顺利穿越沙漠,试问司机如何建立这些储油点?每一个储油点应存多少汽油,才能使卡车以消耗最少汽油的代价通过沙漠?请通过打印储油点的序号,各储油点距离沙漠始点的距离以及储油点的储油量
递推:倒推法
#include<stdio.h>
int main(){
int l=1000,c=500;
int i,k=1;
float oil[20],dis[20],d1;
oil[1]=c;//从后面数第一个点
dis[1]=c;
while(dis[k]<l){//中间的储油点
k++;
oil[k]=k*c;
dis[k]=dis[k-1]+c/(2*k-1);
}
d1=l-dis[k-1];//始点
dis[k]=l;
oil[k]=oil[k-1]+d1*(2*k-1);//网上看的这里是2*k+1,我理解应该是2*k-1,希望可以讨论
for(i=0;i<k;i++){
printf("i=%d dis=%.2f oil=%.2f\n",i,1000-dis[k-i],oil[k-i]);
}
return 0;
}