使用火车找到到达目的地的最低成本


对于此问题,旅程中有 N 个站点。车辆从站点 0 开始旅程,到达 N-1。在一个表格中,给出了所有站点对的票价。我们必须按照给定的成本找到到达目的地的最低成本。

输入和输出

Input:
The cost matrix of the journey.
0 15 80 90
∞  0 40 50
∞  ∞  0 70
∞  ∞  ∞  0

Output:
The minimum cost is 65.
At first go to the destination 1 from 0. (cost 15), then 1 to 4 (cost 50). So total cost 65.

算法

findMinCost(cost)

输入 − 每个源到每个目的地的成本矩阵。

输出 − 找到到达目的地的最低成本。

Begin
   define array costLoc, whose size is same as sumber of locations,
   fill costLoc with ∞.
   n := number of locations
   costLoc[0] := 0

   for each source i to each destination j, do
      if costLoc[j] > costLoc[i] + cost[i, j], then
         costLoc[j] := costLoc[i] + cost[i, j]
   done

   return costLoc[n-1]
End

实例

#include<iostream>
#define INF INT_MAX
#define NODE 4
using namespace std;

int cost[NODE][NODE] = {
   {0, 15, 80, 90},
   {INF, 0, 40, 50},
   {INF, INF, 0, 70},
   {INF, INF, INF, 0}
};

int findMinCost() {          //find smallest possible cost to reach destination
   int costStation[NODE];    //store cost to reach any station from 0

   for (int i=0; i<NODE; i++)
      costStation[i] = INF;       //initially all are infinity
   costStation[0] = 0;         //cost for station 0 is 0 as it is starting point

   for (int i=0; i<NODE; i++)
      for (int j=i+1; j<NODE; j++)
         if (costStation[j] > costStation[i] + cost[i][j])    //find intermediate station for min cost costStation[j] = costStation[i] + cost[i][j];
   return costStation[NODE-1];
}

int main() {
   cout << "The Minimum cost to reach station " << NODE << " is " << findMinCost() << endl;
   return 0;
}

输出

The Minimum cost to reach station 4 is 65

更新于: 16-6-2020

552 浏览

开启您的职业

通过完成课程获得认证

开始
广告