電車を使って目的地に到着するための最小費用を見つける
この問題では、旅の途中に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
-
Pythonを使用してすべてのノードに到達するための頂点の最小数を見つけるプログラム
n個の頂点とノードに0からn-1までの番号が付けられた有向非巡回グラフがあるとします。グラフはエッジリストで表されます。ここで、edges [i] =(u、v)はノードuからノードv。グラフ内のすべてのノードに到達できる頂点の最小セットを見つける必要があります。 (頂点は任意の順序で返すことができます)。 したがって、入力が次のような場合 これらの2つの頂点は他のどの頂点からも到達できないため、出力は[0,2,3]になります。したがって、それらから開始すると、すべてをカバーできます。 これを解決するには、次の手順に従います- n:=エッジのサイズ all_nodes:=
-
Pythonで階段の一番上に登るのに最小限のコストを取得するためのプログラムはありますか?
階段と呼ばれる数のリストと別の値kがあるとします。現在、階段0にあり、最後の階段のインデックスに登りたいと考えています。値stair[i]は、インデックスに到達するためのコストを示し、各ラウンドで1、2、...kの階段を一度にジャンプできます。最後の階段に登るのに必要な最小費用を見つける必要があります。 したがって、入力がstairs =[4、11、11、3、2] k =3の場合、stairs [4、3、2] を使用すると、出力は9になります。 これを解決するために、次の手順に従います q:=両端キューで、ペア(stairs [0]、0)を挿入します 1から階段のサイズまでの範