最近入店數我有這個很煩人的問題,已被竊聽我幾個小時。 我有包含數字的2D陣列。這可能是這樣的:查找二維數組
11211
1 31
1 111
1 11
13111
數字1是「牆」,2是入口和3是我們希望達到的點。正如你所看到的,我們有兩個3的事件,而且它們並不相等。我需要找到最近的一個。記住輸入數組是隨機的,不必看起來像這樣。
我正在考慮如何解決這些問題: 先找到入口。這隻能在O完成(N^2)(最壞情況)時,因爲入口可以是陣列中的任何地方,並且不必須是沿邊緣。我可以實現這個沒有任何問題。
然後,我需要從數組中的入口點進行搜索。每當我找到了3號,我需要記住,我訪問了它,並且點(從例2和3)之間的距離。比方說,我發現離入口最遠的3號。這顯然不是最接近的點(如果我們看例子)。我需要跳回到入口並再次搜索。我想過有一種實時計數器,計數的步驟,所以,如果我曾經做更多的步驟比我剛剛發現了寶藏,我只想停下來,說,之前發現的寶藏是最接近的。
我認爲有一個更好的方式來有效地實現它,但我真的無法想象如何去做。我試圖尋找Dijkstra算法,但它似乎發現從入口到陣列中的所有號碼(號碼爲針對性3號)的最短路徑。我想你可以過濾掉其中最短的一個,但是到底你會如何在Java中實現這一點?
我不是在尋找完整的代碼,而只是爲了指導我,以便我能夠理解如何實現它。
我知道可以有兩個距離入口處距離相等的元素。如果是這樣的話,我只需要挑一個。但感謝評論 – 2013-04-28 15:48:39