1
例如,考慮一個非迴繞4x4矩陣;查找矩陣中相鄰單元格的算法
1 2 5 1
5 2 5 2
9 3 1 7
2 9 0 3
如果我想找到第一行中的5的鄰居= 2,5,1。有沒有比循環做兩個更有效的解決方案,並添加了一堆條件?
例如,考慮一個非迴繞4x4矩陣;查找矩陣中相鄰單元格的算法
1 2 5 1
5 2 5 2
9 3 1 7
2 9 0 3
如果我想找到第一行中的5的鄰居= 2,5,1。有沒有比循環做兩個更有效的解決方案,並添加了一堆條件?
是的。如果你真的需要找到鄰居,那麼你可以選擇使用圖形。
圖基本上是頂點類w /它們相鄰的頂點,形成一個邊。我們可以在這裏看到,2形成邊緣w/5,1形成邊緣w/5等。
如果您需要知道鄰居非常頻繁(因爲如果您不),然後實現自己的頂點類,將值(5)包裝在一個通用的T val變量中。通過在散列表中添加(頂點,距離),獲得相鄰數字及其相應距離的散列表(如果需要查找2的鄰居,則還需要將它們分配)。
稍後,只需遍歷鄰居的散列表。
但是,對於一個這樣簡單的數組,只需要執行for循環並使用「一堆if語句」就沒有太多的開銷。事實上,你只需要在每個方向(這是4)都有(邊界檢查)。
希望這會有所幫助。
如果您顯示您的代碼會很有幫助 – Dinesh 2014-11-23 22:55:23