gpt4 book ai didi

java 在二维矩阵中移动

转载 作者:太空宇宙 更新时间:2023-11-04 08:01:38 26 4
gpt4 key购买 nike

我有一个二维数组int矩阵[numNodes][numArcs]。这是一个关联矩阵。

现在,如果我们希望添加一条弧,我们必须检查这些节点是否存在并且弧不存在。这部分效果很好。我需要做的以下事情是找到一个空列来添加弧。所以矩阵一开始就全是零。很简单,您搜索每一列,直到找到一列全是零。听起来很简单,但现在可以工作了。这部分代码如下:

    outerloop:
for (int i = 0; i < numArcs; i++){
for (int j = 0; j < numNodes; j++){
if (matriz[j][i] != 0)
break;
//It finds a number != 0 so it should move to the next column

//If it gets here, the whole column was full of zeros
column = i;
key = true;
break outerloop;
}
}

我使用 key 来知道我找到了该列,因为如果我没有找到它,因为矩阵已满,我需要复制它。这是与这个问题无关的另一个问题。

现在,我试图找出问题所在,我注意到以下内容:它只检查这些位置:

01
02
03
03

如您所见,它只是检查每列的第一个位置,而不是按照应有的方式一路向下。对我来说这没有意义。在我的示例中,NumNode 为 10,因此它应该一直向下。

编辑:我的具体例子矩阵是这样的:

 -1  -1 -1 0 0 0 ....
0 1 0 0 0 ...
0 0 1 0 0 .....

因此,当它到达第四列时,它会读取该零并返回空列。对于我添加的接下来的 n 条弧,它执行相同的操作。我添加的以下弧不再接触第一行。感谢您的帮助

最佳答案

for (int i = 0; i < numArcs; i++){
for (int j = 0; j < numNodes; j++){
if (matriz[j][i] != 0)
break;
//It finds a number != 0 so it should move to the next column

//If it gets here, the whole column was full of zeros
column = i;
key = true;
break outerloop;
}
}

如果在内循环中,您第一次没有中断怎么办?您将把 i 存储到列中,而不检查该列的其他行。

您可以更好地使用 boolean 标志变量来检查您想要的内容..

    int[][] matrix = new int[5][4];
boolean columnEmpty = true;
int column = 0;
boolean key = false;

matrix[0][0] = -1;
matrix[0][1] = -1;
matrix[1][1] = 1;
matrix[1][2] = -1;
matrix[2][2] = -1;

outerloop: for (int i = 0; i < 5; i++){
columnEmpty = true;
for (int j = 0; j < 4; j++){
if (matrix[j][i] != 0) {
columnEmpty = false;
break;
}

}
if (columnEmpty) {
// If we are here.. then flag was never set to `true`.
// So, all the rows for that column was Zero..
column = i;
key = true;
break outerloop;
}

}

System.out.println("Column : " + column);

关于java 在二维矩阵中移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12770985/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com