Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我如何删除所有“;“边缘”;从一个节点?_Java_Arrays_Nodes_Adjacency Matrix - Fatal编程技术网

Java 我如何删除所有“;“边缘”;从一个节点?

Java 我如何删除所有“;“边缘”;从一个节点?,java,arrays,nodes,adjacency-matrix,Java,Arrays,Nodes,Adjacency Matrix,我的comp sci课程的一个问题是这样的: public void removeEdgesFromNode(int[][] matrix, int x) { for(int i = 0; i < matrix.length; i++) { for(int j = 0; j < matrix[].length; j++) { if(j == x || i == x) {

我的comp sci课程的一个问题是这样的:

public void removeEdgesFromNode(int[][] matrix, int x) {
    for(int i = 0; i < matrix.length; i++) {
        
        
        for(int j = 0; j < matrix[].length; j++) {
            if(j == x || i == x) {
                matrix[i, j] = 0;
            }
        }
    }   
}
我们可以使用“邻接矩阵”
int[][]矩阵
表示图形<代码>矩阵[i][j]如果从节点i到节点j有一条边,则该矩阵将非零。换句话说,在这种情况下,节点i将节点j视为其“邻居”。注意,这并不一定意味着节点j将节点i视为其邻居,从而允许不对称关系。每个值也可以为零,表示没有边/连接。矩阵大小为nxn,其中n是节点数,节点编号为0到n-1,允许任何节点连接到该范围内编号的任何其他节点

给定一个邻接矩阵和
int x
,删除索引x处节点的所有边

我知道什么是邻接矩阵,但我不知道边的问题是什么,或者索引x是什么

到目前为止,我的代码如下所示:

public void removeEdgesFromNode(int[][] matrix, int x) {
    for(int i = 0; i < matrix.length; i++) {
        
        
        for(int j = 0; j < matrix[].length; j++) {
            if(j == x || i == x) {
                matrix[i, j] = 0;
            }
        }
    }   
}
public void removeEdgesFromNode(int[][]矩阵,int x){
对于(int i=0;i
有一个错误发生在它说的地方

Compilation error on line 7: error: class expected
        for(int j = 0; j < matrix[].length; j++) {
                                    ^
第7行编译错误:错误:应为类 对于(int j=0;j
我不认为我解决问题的方法是正确的,但是我正在尝试至少开始解决问题。

您已经接近解决方案。因为您有一个平方n x n矩阵,并且在0..n-1范围内修复了一个索引
x
,您想删除第x行或第x列中的所有元素,您可以使用一个循环如下:

public static void removeEdgesFromNode(int[][] matrix, int x) {
    int n = matrix.length;
        
    for (int i = 0; i < n; ++i) {
        matrix[i][x] = 0;
        matrix[x][i] = 0;
    }
}
public static void removeEdgesFromNode(int[][]矩阵,int x){
int n=矩阵长度;
对于(int i=0;i

如果您使用的
x
索引等于或大于n,则会引发
ArrayIndexOutOfBoundsException
异常,这取决于您决定如何处理此情况。

您已经接近解决方案。因为您有一个平方nxn矩阵,并且修复了范围为0..n-1的索引
x
,因此您希望删除所有元素在第XT行或第XT列中,您可以使用一个循环完成此操作,如下所示:

public static void removeEdgesFromNode(int[][] matrix, int x) {
    int n = matrix.length;
        
    for (int i = 0; i < n; ++i) {
        matrix[i][x] = 0;
        matrix[x][i] = 0;
    }
}
public static void removeEdgesFromNode(int[][]矩阵,int x){
int n=矩阵长度;
对于(int i=0;i

如果您使用的
x
索引等于或大于n,将引发
ArrayIndexOutOfBoundsException
异常,这取决于您决定如何处理此情况。

解决问题的方法是正确的,但不是最佳的。 x的边意味着每j的矩阵[x][j]为0。 x的边意味着矩阵[i][x]对于每个i都是0。 换句话说,矩阵[i][j]中的所有元素,其中i或j是x,都应该是0,这就是你要做的

首先要做的事。你的错误。
matrix[].length
应该是
matrix.length
。试试你的解决方案。应该可以


要获得最佳解决方案,请仔细检查答案。然而,对于该答案,您需要确保矩阵是平方的,并且
x您解决问题的方法是正确的,但不是最佳的。
x的边意味着每j的矩阵[x][j]为0。
x的边意味着矩阵[i][x]对于每个i都是0。
换句话说,矩阵[i][j]中的所有元素,其中i或j是x,都应该是0,这就是你要做的

首先要做的事。你的错误。
matrix[].length
应该是
matrix.length
。试试你的解决方案。应该可以


为了获得最佳解决方案,请仔细检查答案。但是,对于该答案,您需要确保矩阵是平方的,并且
x
j->
j您不需要嵌套循环。只需有一个清除
矩阵[i][x]
矩阵[x][i]的循环即可
其中
i
是迭代的索引。
j
->
j
您不需要嵌套循环。只需使用一个循环来清除
矩阵[i][x]
矩阵[x][i]
其中
i
是迭代的索引。