問題
給定一個長度爲[N]的數組,您必須從數組[0]開始並遍歷到結尾。您可以根據數字總和較低來移動一個或兩個位置,即數組[0] - >數組[1]或數組[0] - >數組[2]。這將會一直重複到最後,並且必須包含array [N]。通過數組的最低成本
[1,10,3,8,4]導航 最便宜的方法是通過陣列= 8 [0] +陣列[2] +陣列[4]
我的當前的解決方案:
int totalCost = 0
totalCost += array[0]
int i = 1;
while (i < array.length)
{
if (i + 1 < array.length)
{
int sum1 = totalCost + array[i];
int sum2 = totalCost + array[i + 1];
if (sum1 < sum2)
{
totalCost += array[i];
i++;
}
else
{
totalCost += array[i + 1];
i += 2;
}
}
else
{
totalCost += array[i];
i++;
}
}
這似乎是大多數陣列工作...問題進場其中,如果早跳導致大數目,但允許通過更好最終導致在一個較低的數字陣列進行進一步的跳躍。我不知道如何解決這個問題。
那麼您如何確定在較早時間較長的跳躍會導致總體成本降低?只有實際完成整個路線,對吧? – UnholySheep
重複的http://stackoverflow.com/questions/33201787/find-cheapest-path-through-array-recursion?rq=1? – ClickRick
你可以在數組中有負數嗎? –