2011-09-12 49 views
0

你好相比細胞,並感謝您抽出時間來閱讀我的問題,的Java:在Array

我有隨機生成的布爾值的矩陣,是我想要做的是比較矩陣的每個單獨的小區周圍的環境,我的意思是細胞到左,右,上,下,和所有4對角線。如果周邊小區是真實的我需要它返回一個「1」,如果爲假,一個「0」,這樣我可以添加周圍的單個電池真假細胞的數量,所以輸出會是這樣的「1 + 1 + 1 + 0等「。如果我已經解釋得很差,我很抱歉,如果需要更多信息,請告訴我。

+0

當編碼我自己的掃雷的版本,我相信我只是使出嵌套的for循環檢查周圍的細胞。 –

回答

3

最簡單的實現方法是嵌套兩個for循環,一個用於x,另一個用於y,其值爲[-1,0,1]。確保考慮矩陣的邊界,並且不要添加當前單元格的值。

一個注意:這將是分裂你的代碼的好地方分成兩個方法,一是做循環,並呼籲其他與座標,而其他執行邊緣的情況下檢查,並返回結果。

3

你在一個矩陣應用two-dimensional convolution,大小爲3的內核是:

1 1 1 
1 0 1 
1 1 1 

(如果你打算包括總和當前單元格,中間應爲1而不是0)。

您可以硬編碼內核或者,對於更好,更全面的代碼,接受一個3×3的內核輸入。如果你不需要一個通用的解決方案,你可以按照syrion的建議。要將布爾值轉換爲1和0,你可以這樣做:cellNum = cellValue ? 1 : 0,例如。