我有一个二维数组 int matrix[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;
}
}
我使用密钥知道我找到了该列,因为如果我没有找到它,因为矩阵已满,我需要复制它。那是与此问题无关的另一个问题。
现在,我试图找出问题所在,我注意到以下几点:它只检查这些位置:
01
02
03
03
正如您所看到的,它只是检查每列的第一个位置,而不是一路向下。对我来说这毫无意义。在我的示例中,NumNode 是 10,所以它应该一直向下。
编辑:我的确切示例矩阵是这样的:
-1 -1 -1 0 0 0 ....
0 1 0 0 0 ...
0 0 1 0 0 .....
因此,当它到达第四列时,它会读取零并返回空列。我添加的下一个 n 弧也是如此。我添加的以下弧不再触及第一行。谢谢您的帮助