Java 如何检查矩阵是否为三对角矩阵

Java 如何检查矩阵是否为三对角矩阵,java,matrix,Java,Matrix,假设我们有以下矩阵(如下)。我想检查矩阵是否是三对角的(除了主、上、下对角元素外,所有元素都是零) 我不知道如何处理这个问题。我试着写了一些代码,但没有任何帮助。如果有人能帮我解决这个问题,那会有帮助的。 我是用java写这篇文章的。若单元格位于主对角线或上对角线或下对角线,则抛出一个循环并获取单元格的值。然后检查值如果为0,则返回false如果单元格不在要求的对角线检查值中,则返回false如果单元格不在要求的对角线检查值中,则返回false。因此,只有当上对角线值、下对角线值或主对角线值不为

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

我不知道如何处理这个问题。我试着写了一些代码,但没有任何帮助。如果有人能帮我解决这个问题,那会有帮助的。
我是用java写这篇文章的。

若单元格位于主对角线或上对角线或下对角线,则抛出一个循环并获取单元格的值。然后检查值如果为0,则返回false如果单元格不在要求的对角线检查值中,则返回false如果单元格不在要求的对角线检查值中,则返回false。因此,只有当上对角线值、下对角线值或主对角线值不为0,而其他所有值均为0时,才返回true

范例

 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;
    }
int[][] matrix = {{1, 4, 0, 0}, {3, 4, 1, 0}, {0, 2, 3, 4}, {0, 0, 1, 3}};
System.out.println(isTriDiagonal(matrix));
输出

true

若单元格位于主对角线或上对角线或下对角线,则抛出一个循环并获取单元格的值。然后检查值如果为0,则返回false如果单元格不在要求的对角线检查值中,则返回false如果单元格不在要求的对角线检查值中,则返回false。因此,只有当上对角线值、下对角线值或主对角线值不为0,而其他所有值均为0时,才返回true

范例

 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;
    }
int[][] matrix = {{1, 4, 0, 0}, {3, 4, 1, 0}, {0, 2, 3, 4}, {0, 0, 1, 3}};
System.out.println(isTriDiagonal(matrix));
输出

true

若单元格位于主对角线或上对角线或下对角线,则抛出一个循环并获取单元格的值。然后检查值如果为0,则返回false如果单元格不在要求的对角线检查值中,则返回false如果单元格不在要求的对角线检查值中,则返回false。因此,只有当上对角线值、下对角线值或主对角线值不为0,而其他所有值均为0时,才返回true

范例

 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;
    }
int[][] matrix = {{1, 4, 0, 0}, {3, 4, 1, 0}, {0, 2, 3, 4}, {0, 0, 1, 3}};
System.out.println(isTriDiagonal(matrix));
输出

true

若单元格位于主对角线或上对角线或下对角线,则抛出一个循环并获取单元格的值。然后检查值如果为0,则返回false如果单元格不在要求的对角线检查值中,则返回false如果单元格不在要求的对角线检查值中,则返回false。因此,只有当上对角线值、下对角线值或主对角线值不为0,而其他所有值均为0时,才返回true

范例

 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;
    }
int[][] matrix = {{1, 4, 0, 0}, {3, 4, 1, 0}, {0, 2, 3, 4}, {0, 0, 1, 3}};
System.out.println(isTriDiagonal(matrix));
输出

true
如果有人能帮我解决这个问题

这里是一个伪代码,其中矩阵
a
n*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
您必须检查矩阵的任何其他值是否为零

如果有人能帮我解决这个问题

这里是一个伪代码,其中矩阵
a
n*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
您必须检查矩阵的任何其他值是否为零

如果有人能帮我解决这个问题

这里是一个伪代码,其中矩阵
a
n*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
您必须检查矩阵的任何其他值是否为零

如果有人能帮我解决这个问题

这里是一个伪代码,其中矩阵
a
n*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


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

基本思想是检查应该为0的元素,如果不为0则失败。如果i是行索引,j是列,那么主对角线是i=j的元素,上对角线是i-1=j的元素,下对角线是i+1=j的元素。如果任何其他元素的值大于0,则它不是三对角的。如果没有其他方法,你可以通过检查矩阵中的每个元素,如果它不是0,那么检查它是否在一条合法的对角线上。要获得更多帮助,您可能应该发布一些代码,尝试执行类似的操作。@Oliver只是一个简单的问题。当以矩阵形式输入
i-1=j
时,表达式
a[i][i-1]
是否正确?(我接近了吗?)。如果i是行索引,j是列,那么主对角线是i=j的元素,上对角线是i-1=j的元素,下对角线是i+1=j的元素。如果任何其他元素的值大于0,则它不是三对角的。如果没有其他方法,你可以通过检查矩阵中的每个元素,如果它不是0,那么检查它是否在一条合法的对角线上。要获得更多帮助,您可能应该发布一些代码,尝试执行类似的操作。@Oliver只是一个简单的问题。当以矩阵形式输入
i-1=j
时,表达式
a[i][i-1]
是否正确?(我接近了吗?)。如果i是行索引,j是列,那么主对角线是i=j的元素,上对角线是i-1=j的元素,下对角线是i+1=j的元素。如果任何其他元素的值大于0,则它不是三对角的。如果没有其他方法,你可以通过检查矩阵中的每个元素,如果它不是0,那么检查它是否在一条合法的对角线上。要获得更多帮助,您可能应该发布一些代码,尝试执行类似的操作。@Oliver只是一个简单的问题。当以矩阵形式输入
i-1=j
时,表达式
a[i][i-1]
是否正确?(我接近了吗?)。如果i是行索引,j是列,那么主对角线是i=j的元素,上对角线是i-1=j的元素,下对角线是i+1=j的元素。如果任何其他元素的值大于0,则它不是三对角的。如果没有其他方法,你可以通过检查矩阵中的每个元素,如果它不是0,那么检查它是否在一条合法的对角线上。要获得更多帮助,您可能应该发布一些代码,尝试执行类似的操作。@Oliver只是一个简单的问题。当以矩阵形式输入
i-1=j
时,表达式
a[i][i-1]
是否正确?(我接近了吗?)是的,这是正确的。但是这是如何计算下对角线和上对角线的?对不起,我没有看到上对角线和下对角线,但是这是如何计算下对角线和上对角线的?对不起,我没有看到上对角线和下对角线,但是这是如何计算的