Java 我如何删除所有“;“边缘”;从一个节点?
我的comp sci课程的一个问题是这样的: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) {
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
。试试你的解决方案。应该可以
为了获得最佳解决方案,请仔细检查答案。但是,对于该答案,您需要确保矩阵是平方的,并且xj->j您不需要嵌套循环。只需有一个清除矩阵[i][x]
和矩阵[x][i]的循环即可
其中i
是迭代的索引。j
->j
您不需要嵌套循环。只需使用一个循环来清除矩阵[i][x]
和矩阵[x][i]
其中i
是迭代的索引。