我有兩個陣列如何找到最短路徑成本?
string[] city = {"A","B","C","D"}
和連接的成本他們說
int[] cost ={ 2,1,3,2,4,3}
的任務是找到這將是6這裏的最短路徑成本。
爲什麼?
A->B = 2
A->C = 1
A->D = 3
--------- = 6 (cheapest)
B->C = 2
B->D = 4
B->A = 2
-------- = 8
C->D = 3
C->A = 1
C->B = 2
------------ = 6 (cheapest)
D->A =3
D->B = 4
D->C = 3
------------- = 10
等等..總數16(2^4)這樣的組合會出現。
我正在引用SO +中的其他一些問題,但無法理解。
如何做到這一點,而不需要任何第三方圖書館的幫助?請提供一個簡單的方法來做到這一點!
我嘗試(不是很正確)
public static int minimum_cost(string[] input1, int[] input2)
{
int i = 0;
int j = 0;
int k = 0;
int counter = 0;
int len = input2.Length;
var storage = new int[input1.Length * input2.Length];
for (i = 0; i < len - 2; i++)
{
for (j = i + 1; j < len - 1; j++)
{
for (k = j + 1; k < len; k++)
{
var m1 = input2[i];
var m2 = input2[j];
var m3 = input2[k];
storage.SetValue(m1 + m2 + m3, counter);
counter++;
}
}
}
return storage.Take(counter).Min();
}
調用
var input1 = new string[] { "A", "B", "C", "D" };
var input2 = new int[] { 2, 3, 1, 2, 4, 3 };
var res = minimum_cost(input1, input2);
在此先感謝。
您的代碼並沒有太大的意義沒有上下文。例如,您的6個整數成本代表哪些連接?我理解你的目標是一個所有節點都連接的圖表嗎? – 2013-05-10 11:46:43
您的示例輸出不顯示最短路徑,而是最中心的城市。最短的路徑將依次通過所有城市,因此不會出現「A-> B,A-> C,A-> D」,而是「A-> B,B-> C,C-> D」。 – 2013-05-10 11:47:53
@ Dan Puzey,是的,先生...你可以假設他們連接在圖中... – 2013-05-10 11:47:55