如何检查矩阵是否是三对角线

时间:2015-07-06 03:38:24

标签: java matrix

假设我们有以下矩阵(如下)。我想检查矩阵是否是三对角线(除主要,上下对角线元素外,所有元素都为零)。

a[0][0] a[0][1] a[0][2]
a[1][0] a[1][1] a[2][2]
a[2][0] a[2][1] a[2][2]

我不确定如何处理这个问题。我曾尝试编写一些代码但没有任何帮助。如果有人可以帮我解决问题,那会有所帮助。 我在java中写这个。

2 个答案:

答案 0 :(得分:2)

如果单元格在主对角线或上部或下部,您将抛出一个循环并获取单元格的值。然后检查值是否为0如果单元格不在所需的对角线检查值中则返回false如果不是0则返回false。所以只有当上对角线或下对角线或主对角线值不是0且其他所有值都是0你会成真的。

示例

 public boolean isTriDiagonal(int[][] matrix) {
        for (int x = 0; x < matrix.length; x++) {
            for (int y = 0; y < matrix[x].length; y++) {
                int cell = matrix[x][y];

                if ((x==y) || (x-1==y) || (x+1==y)) {
                    if (cell == 0) {
                        return false;
                    }
                } else {
                    if (cell != 0) {
                        return false;
                    }
                }
            }
        }
        return true;
    }

示例

enter image description here

int[][] matrix = {{1, 4, 0, 0}, {3, 4, 1, 0}, {0, 2, 3, 4}, {0, 0, 1, 3}};
System.out.println(isTriDiagonal(matrix));

输出

true

答案 1 :(得分:0)

  

如果有人可以帮我解决问题

以下是矩阵an*m的伪代码:

begin for i = 0 to n:
    begin for j = 0 to m:
        if(i = j) {
            if a[i][j] == 0 return false;
            if a[i][j+1] == 0 return false;
            if a[i+1][j] == 0 return false;
        }
    end for
end for
return true

您必须检查矩阵的任何其他值是否为零。