資源簡介
一個旅行家想駕駛汽車從城市A到城市B(設出發(fā)時油箱是空的)。給定兩個城市之間的距離dis、汽車油箱的容量c、每升汽油能行駛的距離d、沿途油站數(shù)n、油站i離出發(fā)點的距離d[i]以及該站每升汽油的價格p[i],i=1,2,…,n。設d[1]=0<d[2]<…<d[n]。要花最少的油費從城市A到城市B,在每個加油站應加多少油,最少花費為多少?
代碼片段和文件信息
#include?
#include?
#define?MAX?200?
double?TX(double?d1double?cdouble?d2int?ndouble?d[MAX]?double?p[MAX]?)/*核心算法*/
??{
int?i;??
double?result=0.0;//油量總價
????double?sy[MAX];//剩余油量
for(i=0;i ?sy[i]=0;
????double?x[MAX];
for(i=0;i ?x[i]=0;
????for(i=0;i ??????{
?????????//k指向下一站
?????????int?k=i+1;
?????????//k指向油價比第i站便宜
?????????while(p[k]>p[i]&&k ?????????{??
???????????k++;
?????????}
?????????//如果k站和i站之間距離大于裝滿油時所能行駛的距離則加滿油
?????????if(d[k]-d[i]>c*d2)//d[]指兩站之間的距離
?????????{
?????????????x[i]=c-sy[i];//x[i]指第i站的加油量
?????????}
?????????//如果k站和i站之間距離不大于裝滿油時所能行駛的距離,
????? //則保證所加油量只行駛到第k站,并跳過檢查其間的加油站是否需要加油
?????????else
?????????{
???????????//若油量足夠行駛到k站則不加油
???? if((d[k]-d[i])/d2>sy[i])//不夠則加油?
x[i]=(d[k]-d[i])/d2-sy[i];
else?
x[i]=0;
???
評論
共有 條評論