Я разрабатываю матрицу смежности, поэтому я могу попробовать и использовать DFS для решения проблемы схемы эйлеров. Это соответствующий код на мой вопрос:Простая функция добавления к матрице смежности
public class Graph {
private int numVertex;
private int numEdges;
private boolean[][] adj;
public Graph(int numVertex, int numEdges) {
this.numVertex = numVertex;
this.numEdges = numEdges;
this.adj = new boolean[numVertex][numVertex];
}
public void addEdge(int start, int end){
if(!adj[start][end])
numEdges++;
adj[start][end] = true;
adj[end][start] = true;
}
Когда я пытаюсь и тест запустить этот код, добавив некоторые ребра я получаю:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at Graph.addEdge(Graph.java:18)
at Graph.main(Graph.java:66)
Я использую это, чтобы проверить код:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int numVertices = input.nextInt();
int numLinks = input.nextInt();
int startNode = input.nextInt();
Graph g = new Graph(numVertices, numLinks);
for(int i = 0; i<numLinks; i++){
g.addEdge(input.nextInt(),input.nextInt());
}
Я думаю, что проблема заключается в функции addEdge. Что я делаю не так?
Привет, Тед, я не понял ... Вы рекомендовали мне изменить реализацию, которую я имею, или это возможная поправка к реализации, которую я имею? Как это будет выглядеть с помощью Bit Set? –
@ CláudioRibeiro - Кажется, я пропустил что-то в своем первом ответе. Я отредактировал свой ответ, а также предоставил некоторый пример кода для использования «BitSet». –