2014-11-23 104 views
1

例如,考慮一個非迴繞4x4矩陣;查找矩陣中相鄰單元格的算法

1 2 5 1 
5 2 5 2 
9 3 1 7 
2 9 0 3 

如果我想找到第一行中的5的鄰居= 2,5,1。有沒有比循環做兩個更有效的解決方案,並添加了一堆條件?

+3

如果您顯示您的代碼會很有幫助 – Dinesh 2014-11-23 22:55:23

回答

1

是的。如果你真的需要找到鄰居,那麼你可以選擇使用圖形。

圖基本上是頂點類w /它們相鄰的頂點,形成一個邊。我們可以在這裏看到,2形成邊緣w/5,1形成邊緣w/5等。

如果您需要知道鄰居非常頻繁(因爲如果您不),然後實現自己的頂點類,將值(5)包裝在一個通用的T val變量中。通過在散列表中添加(頂點,距離),獲得相鄰數字及其相應距離的散列表(如果需要查找2的鄰居,則還需要將它們分配)。

稍後,只需遍歷鄰居的散列表。

但是,對於一個這樣簡單的數組,只需要執行for循環並使用「一堆if語句」就沒有太多的開銷。事實上,你只需要在每個方向(這是4)都有(邊界檢查)。

希望這會有所幫助。