私は 2 次元配列 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;
}
}
キーを使用して、列が見つかったことを確認します。マトリックスがいっぱいで、複製する必要があるため、列が見つからない場合です。これは、この問題とは関係のない別の問題です。
今、私は問題を理解しようとしましたが、次のことに気付きました:これらの位置のみをチェックしています:
01
02
03
03
ご覧のとおり、各列の最初の位置をチェックするだけで、本来あるべき位置まで下がっていません。私には意味がありません。私の例では NumNode は 10 です。
編集:マトリックスの正確な例は次のとおりです。
-1 -1 -1 0 0 0 ....
0 1 0 0 0 ...
0 0 1 0 0 .....
したがって、4 番目の列に到達すると、そのゼロが読み取られ、空の列が返されます。追加した次の n 個のアークについても同じことが行われます。私が追加する次のアークは、最初の行には触れません。助けてくれてありがとう