储油点 递推

储油点

一辆重型卡车预穿过长度大于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;
	
} 


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值