简答题

G先生想独自驾驶汽车从城市A到城市B。从城市A到城市B的距离为d0公里。汽车油箱的容量为c公升。每公升汽油能行驶e公里。出发点每公升汽油的价格为p元。从城市A到城市B沿途有n个加油站。第i个加油站距出发点的距离为di,油价为每公升pi元。请设计一个算法使到G先生旅行的费用最省(这里的旅行费用指的是加油的总花费)。

正确答案

第一步:判断旅行家能否到达目的地
假设在任一个加油站都加满油,能否到达终点
第二步:预算最少费用
采用贪心算法的思想求解
汽车在到达目的地之前的每一时刻,都必须保证油箱中的汽油足够行驶到下一油站。
如果以p(i)表示第i油站的汽油价格,x(i)表示在第i油站所加汽油的量,总费用为P=∑p(i)*x(i)i=0,1,….,n。
两个城市之间的距离是固定不变的,汽车从出发点到达目的地所需要的汽油总量(即∑x(i)i=0,1,….,n)自然也是固定不变的。
根据使费用最少的求解目标,要使费用函数取得最优值(在此为最小值),必须使p(i)尽可能小:也就是汽车要尽可能在价格便宜的油站加油。
汽车每到达一个油站i(包括出发点第0站,但不包括目的地第n+1站),都要检查是否需要加油。
如果汽车在某个油站i需要加油,那么,就先将该油站的汽油价格p(i)与下一油站的汽油价格p(i+1)进行比较,若p(i)>=p(i+1),加油时,只需保证油箱中的汽油能够到达下一油站(第i+1站)即可;
否则,继续将p(i)与第i+2站的汽油价格p(i+2)进行比较,……
判断是否需要在第i站加油的条件可以确定为:在到达第i站时,汽车油箱中的剩余汽油(用变量rest表示剩余汽油的多少)是否足够行驶到下一更便宜的油站j,即rest*e是否大于或等于d(j)-d(i)。
如果一直找不到比第i个油站更便宜的油站j,则在第i个油站加满油(如果不用加满就已经到了终点,则加油量应该满足刚好到达终点)。

答案解析

相似试题
  • 在对象联系图中,如果从A到B有双线箭头,则表示A是B的()

    单选题查看答案

  • ()是让观众能从高处俯瞰到城市的建筑物和桥梁等,一般的用于表现一个故事的整体气氛交代故事发生的环境。

    单选题查看答案

  • 为将报文从主机A发向主机B,当数据报在以太网里从路由器A转发到路由器B的时候,报头中()。

    多选题查看答案

  • 当数据从主句A到主机B时,A中第三层所添加的首部被B中第()层读取

    单选题查看答案

  • 从10000H开始的内存单元存放有 "A”到"G”的ASCII码,请画出存储示意图。

    简答题查看答案

  • 攻击者截获并记录了从A到B的数据,然后又从早些时候所截获的数据中提取出信息重新发往B称为()。

    单选题查看答案

  • 假定一个E-R图包含有A实体和B实体,并且从A到B存在着M:N的联系,则转换成关系模型后,包含有()个关系模式。

    填空题查看答案

  • 假定一个E-R图包含有A实体和B实体,并且从A到B存在着1:N的联系,则转换成关系模后,右以包含有()个关系模式。

    填空题查看答案

  • 如果想让一个图形元件从可见到不可见,应将其()从100%调节到0%。

    填空题查看答案