-2
グラフ上で(ブール値行列を使用して)いくつかの基本関数を実行しようとしています。彼らはすべてDFSのものを除いて動作します。それは私にいくつかの乱数を与える。私はこの問題を数時間から解決しようとしていますが、まだ何もありません。(コードはコンパイルされていますが、間違って表示されています)。 Btwの場合、DFSの結果は、スタックの数と各グラフ頂点の「巻き戻し」を伴う行列でなければなりません。DFS反復関数が正常に動作しない
私のエラーはどこですか?
私のプログラム:
mark[s][0] = recorder++;
私が正しくあなたのコードを読めば、それはmark[i][0]
する必要があります:
public int[][] DFS(int s) {
Stack<Integer> stack = new Stack<Integer>();
stack.push(s);
int recorder = 1;
int[][] mark = new int[nbs][2];
mark[s][0] = recorder++;
boolean[] decouvert = new boolean[nbs];
while (!stack.isEmpty()) {
s = stack.pop();
mark[s][1] = recorder++;
if (!decouvert[s]) {
decouvert[s] = true;
for (int i = 0; i < nbs; i++) {
if (m[s][i]) {
stack.push(i);
mark[s][0] = recorder++;
}
}
}
}
return mark;
}
結果:[リンク](http://puu.sh/vNa5O/f630091c27.png) このグラフのうち、[リンク](http://puu.sh/vN9V6/b70c3f1d4c.png)とIメインでこれをしています: 'int [] [] r2 = g3.DFS(0); (i + ":" + "r2 [i] [0] +" | "+ r2 [i] [1])に対する(int i = 0; i
私の変数「decouvert」は「発見」を意味し、 –