gpt4 book ai didi

java - 如何检查二维数组中的对角邻居并将当前值设置为等于邻居数量

转载 作者:行者123 更新时间:2023-12-01 12:24:52 25 4
gpt4 key购买 nike

我正在尝试遍历一个 2D 数组并计算所有等于 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

所以前两行可以工作,然后第三行有几个 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

如有任何建议,我们将不胜感激。

最佳答案

你从

开始
0 5 0 9
0 5 0 3
1 9 4 6
7 0 0 9

您从左上角开始遍历并同时修改矩阵。所以修改2行后,中间矩阵为

0 2 0 1 
0 3 1 2
1 9 4 6
7 0 0 9

现在考虑索引[2][1]处的元素。在原始矩阵中,它有 3 个零邻居,但该矩阵只有 2,因此预期输出和获得的输出存在差异。

创建一个单独的矩阵来存储修改后的值。

关于java - 如何检查二维数组中的对角邻居并将当前值设置为等于邻居数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26444049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com