我有3x3矩阵:
1 -1 0 0
1 2 2 1
1 1 1 -1
-1 0 3 6
我试图找到具有值= -1的单元格的对角元素,并乘以对角线单元格([i-1] [j-1],[i-1] [j + 1],[ i + 1] [j-1],[i + 1] [j + 1])值为2.到目前为止,我已经实现了这一点,但似乎单元格[1] [2]即第二行第三列,对角线为2个单元,为[0] [1]和[2] [3]。所以,我得到的结果应该是这样的:
1 -1 0 0
2 2 4 1
1 2 1 -1
-1 0 6 6
看起来像这样:
1 -1 0 0
2 2 8 1
1 2 1 -1
-1 0 6 6
即。单元格[1] [2]中有一个值8而不是4。那么如何检查单元格是否已经访问过一次并乘以2以使其不能再次相乘。这是我尝试的代码:
for (int i = 0; i <= x; i++) {
for (int j = 0; j <= y; j++) {
if (resultArray[i][j] == -1) {
if (isAdjacent(i - 1, j - 1, x, y))
resultArray[i - 1][j - 1] *= 2;
if (isAdjacent(i - 1, j + 1, x, y))
resultArray[i - 1][j + 1] *= 2;
if (isAdjacent(i + 1, j - 1, x, y))
resultArray[i + 1][j - 1] *= 2;
if (isAdjacent(i + 1, j + 1, x, y))
resultArray[i + 1][j + 1] *= 2;
}
}
}
return resultArray;
static boolean isAdjacent(int i, int j, int x, int y) {
boolean flag = false;
if (i >= 0 && i <= x && j >= 0 && j <= y) {
flag = true;
}
return flag;
}