我必須找到從D點到R的最短路徑。這些是固定點。 這是情況的一個例子:最短成本路徑
盒還包含牆壁,通過它,你不能在他們通過,除非你打破他們。每個牆壁破裂都會讓你付出代價,讓我們說「a」點,其中「a」是一個正整數。 每一個不涉及牆壁的舉動都需要1分。
該任務是找出所有最低成本的路徑,最少破牆數量的路徑。
因爲盒子的寬度可以達到100個單元格,所以與使用回溯無關。這太慢了。我想出了唯一的解決辦法是這樣的一個:
- 向東走還是南方,如果沒有牆壁
- 如果南方有一面牆,檢查是否有西牆上。如果西有牆,打破南牆。如果西面沒有牆,那就往西走,直到找到一個沒有牆的南面的牢房。重複這個過程,南和東,直到你超過這個順序破牆的成本。如果來自西部的路徑進入同一地點,就好像我已經打破了南牆並且花費相同或小於「a」點,則使用此路徑,否則制動南牆。
- 如果以上沒有任何事情發生,根據箱子的邊界制動南或東牆。
重複步驟1,2,3,直到「乘客」到達點R.在這3個步驟之間,存在「否 - 如果」關係。
你能想出更好的問題算法嗎?我用C++編程。
究竟是什麼意思,「找出具有最低成本和最小斷壁的路徑」?像「在所有最低成本的路徑中,有最少數量的破牆」之類的東西? – harold
是的,在所有最低成本的路徑中,選擇牆壁數量最少的路徑。 –
當我從D出發時,是否知道所有的牆壁都在哪裏?或者只有當我到達他們時才發現他們? – Beta