【发布时间】:2019-04-15 17:49:42
【问题描述】:
我必须将矩阵垂直分成两半并查看它是否对称。例如,如果 mat[0][0]==mat[0][1] 和 mat[1][0]==mat[1][1],则矩阵是对称的。我已经设法检查了 2x2 矩阵的对称性,但我希望该函数适用于任何类型的矩阵,例如 4x4 或 3x3。
i 和 j 是我用来遍历 mat 元素的变量,n 是矩阵的维数。这是 2x2 矩阵的函数。如何概括它?
private static void getSymmetry(int mat[][], int i, int j, int n) {
int index = 0;
int sum=0;
if (n == 2) {
if (mat[i][j] == mat[i][j + 1]) {
index = index + 1;
}
if (mat[i + 1][j] == mat[i + 1][j + 1]) {
index = index + 1;
}
sum = sum + index;
}
System.out.println("Degree of symmetry is " + sum);
}
【问题讨论】:
-
关于哪个轴对称?
-
我在 oY 轴(垂直)上分割矩阵并检查右侧的元素是否与左侧的元素对称@Andy Turner
-
一般情况下不宜分开处理。每个矩阵的算法都是相同的。使用 for 循环遍历所有行并检查该行是否对称。为此,您必须遍历行的元素并检查是否为
row[x] == row[len-1-x]。有了它,您应该能够自己编写代码。堆栈溢出不是代码工厂 -
奇数列的矩阵是什么?
-
您确定您的问题正确吗?通常对称矩阵意味着对角线对称而不是 y 轴 - 请参阅:en.wikipedia.org/wiki/Symmetric_matrix。但是,如果您的意思是跨 y 轴镜像 - 您需要定义如何管理奇数列 - 例如在 3x3 中 - 我们是否忽略中间列?