Я пытаюсь использовать рекурсию и 2D-массив для реализации поиска в глубину по матрице смежности и имею проблемы. Я все еще новичок в этом, извините, если моя ошибка слишком очевидна.
Мой код не читает строку, если все числа равны 0, и не показывает посещенные компоненты.
Например, матрица 10x10, в которой только 1 в строке, столбце (9,6) и также (6,9) соответственно. Все остальное 0.
Он должен выводить
Component: 1
Component: 2
Component: 3
Component: 4
Component: 5
Component: 6 9
Component: 7
Component: 8
Component: 10
Total number of Components: 9
Вот мой метод до сих пор.
public static void dfs(int i, int[][] G) {
boolean [] visited = new boolean[10];
if(!visited[i]){
visited[i] = true; // Mark node as "visited"
System.out.println("Compnent: " );
System.out.println( i+1 + " ");
for (int j = 0; j < G[i].length-1; j++) {
if (G[i][j]==1 && !visited[j]) {
dfs(j, G); // Visit node
}
}
}
}
Единственное, что отображается выше, — это Компонент 1, после чего метод останавливается.