我试图找出矩阵 [][] 在不同方向(水平/垂直或两者)上是否对称,并找到了本教程 https://www.geeksforgeeks.org/check-horizontal-vertical-symmetry-binary- matrix/ 并用我的矩阵尝试过,但它似乎无法正常工作。这是我当前的代码和我得到的输出:
示例矩阵:
111
144
144
我通过以下方式调用教程中的方法:
// test for symmetrie
checkHV(matrix, rows, colums);
在这种情况下,行和列都是 3。在我看来,它应该输出 NO,但当前输出是 VERTICAL(总是,所有矩阵......)。这是为什么?我怎样才能修改代码以使其对我正常工作?谢谢!
这里是教程中的代码:
static void checkHV(int [][]arr, int N,
int M)
{
// Initializing as both horizontal
// and vertical symmetric.
boolean horizontal = true;
boolean vertical = true;
// Checking for Horizontal Symmetry.
// We compare first row with last
// row, second row with second
// last row and so on.
for (int i = 0, k = N - 1;
i < N / 2; i++, k--)
{
// Checking each cell of a column.
for (int j = 0; j < M; j++)
{
// check if every cell is identical
if (arr[i][j] != arr[k][j])
{
horizontal = false;
break;
}
}
}
// Checking for Vertical Symmetry. We compare
// first column with last column, second xolumn
// with second last column and so on.
for (int i = 0, k = M - 1;
i < M / 2; i++, k--)
{
// Checking each cell of a row.
for (int j = 0; j < N; j++)
{
// check if every cell is identical
if (arr[i][j] != arr[k][j])
{
horizontal = false;
break;
}
}
}
if (!horizontal && !vertical)
System.out.println("NO");
else if (horizontal && !vertical)
System.out.println("HORIZONTAL");
else if (vertical && !horizontal)
System.out.println("VERTICAL");
else
System.out.println("BOTH");
}
蝴蝶刀刀
相关分类