我正在嘗試遍歷二維數組並計算所有等於0的對角線鄰居,然後將當前位置設置爲等於鄰居。例如:如何檢查二維數組中的對角線鄰居並將當前值設置爲等於鄰居數
0 5 0 9
0 5 0 3
1 9 4 6
7 0 0 9
如果我使用下面的代碼更改爲
0 2 0 1
0 3 1 2
1 3 1 2
0 1 1 1
(我趕上例外,因爲將有索引越界異常的所有參數號):
int row, col, count;
count = 0;
// Standard for-loop used in walking through a 2D array
for (row = 0; row < NUM; row++) {
for (col = 0; col < NUM; col++) {
// Check top left neighbor
try {
if (grid[row - 1][col - 1] == 0) {
count++;
}
} catch (IndexOutOfBoundsException e) {
} // Check bottom left neighbor
try {
if (grid[row - 1][col + 1] == 0) {
count++;
}
} catch (IndexOutOfBoundsException e) {
} // Check top right neighbor
try {
if (grid[row + 1][col - 1] == 0) {
count++;
}
} catch (IndexOutOfBoundsException e) {
} // Check bottom right neighbor
try {
if (grid[row + 1][col + 1] == 0) {
count++;
}
} catch (IndexOutOfBoundsException e) {
} // Set current place in the array equal to number of 0 neighbors
grid[row][col]=count;
count = 0;
}
}
問題是我的輸出是錯誤的。取而代之的是所謂的代碼,它更改爲以下:
0 2 0 1
0 3 1 2
1 2 1 1
0 0 0 0
所以前兩行的工作,然後3號線有幾個OBO錯誤。不知道最後一行甚至有什麼問題,我不確定哪裏出錯。
摘要
原文是:
0 5 0 9
0 5 0 3
1 9 4 6
7 0 0 9
這應該更改爲:
0 2 0 1
0 3 1 2
1 3 1 2
0 1 1 1
但我發現了:
0 2 0 1
0 3 1 2
1 2 1 1
0 0 0 0
另一個例子是:
原文:
5 0 0 3 9 5
0 0 9 5 3 0
0 0 0 9 7 3
7 0 5 0 9 5
0 0 3 0 0 0
9 5 0 3 7 0
更新時間:
1 1 1 0 1 0
1 2 2 1 2 0
1 0 2 0 2 0
2 1 4 1 4 1
0 1 0 1 1 0
0 2 0 1 1 0
任何建議將非常感謝。
實際問題是什麼? – 2014-10-18 20:10:16
現在加入。對於那個很抱歉。 – Nilnoc 2014-10-18 20:13:01
爲什麼最後一行有1個?任何對角線都沒有零。 – scanales 2014-10-18 20:22:01