• 大小: 2KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-12
  • 语言: C/C++
  • 标签: 加油  贪心算法  

资源简介

一个旅行家想驾驶汽车从城市A到城市B(设出发时油箱是空的)。给定两个城市之间的距离dis、汽车油箱的容量c、每升汽油能行驶的距离d、沿途油站数n、油站i离出发点的距离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;
   

评论

共有 条评论