私は隣接行列を開発していますので、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関数にあると思います。何が間違っているのですか?
こんにちは、私は理解していませんでした...あなたは私の実装を変更することをお勧めしましたか、それは私が持っている実装に可能な修正ですか?ビットセットを使用するとどのように見えますか? –
@CláudioRibeiro - 私は最初の反応で何かを逃したと思う。私は私の答えを編集し、 'BitSet'を使うためのサンプルコードも提供しました。 –