资源简介
一个旅行家想驾驶汽车从城市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;
- 上一篇:Socket异步通信 MFC
- 下一篇:C语言数据结构课程设计迷宫问题
评论
共有 条评论