-2
오류 행은 69,33,51입니다. 오류는 배열 색인이 범위를 벗어났습니다DFS의 ArrayIndexOutOfBoundsException
다음은 깊이 우선 검색 알고리즘의 Java 코드입니다. 이 바운드 예외 밖으로 배열 인덱스를 보여줍니다 69,33,51에서
..
public class dfs1 {
Stack<Integer> st;
int vFirst;
int[][] matrix;
int[] isVisited = new int[3];
public static void main(String args[])
{
Scanner input=new Scanner(System.in);
System.out.println("enter the no of vertices");
int size=input.nextInt();
int[][] matrix=new int[size][size];
System.out.println("enter the values for matrix");
for(int row=0;row<size;row++)
{
for(int col=0;col<size;col++){
matrix[row][col]=input.nextInt();
}
}
System.out.println("the adjacency matrix is ");
for(int row=0;row<size;row++)
{
for(int col=0;col<size;col++){
System.out.println(matrix[row][col]);
}
}
System.out.println("enter the start vertex ");
int start=input.nextInt();
new dfs1(matrix,size,start);
}
public dfs1(int[][] matrix,int size,int start)
{
this.matrix = matrix;
st = new Stack<Integer>();
int[] node=new int[size];
for(int i=0;i<size;i++)
{
node[i]=i;
}
int firstNode = start;
depthFirst(firstNode,size);
}
public void depthFirst(int vFirst,int n)
{
int v,i;
st.push(vFirst);
while(!st.isEmpty())
{
v = st.pop();
if(isVisited[v]==0)
{
System.out.print("\n"+(v+1));
isVisited[v]=1;
}
for (i=0;i<n;i++)
{
if((matrix[v][i] == 1) && (isVisited[i] == 0))
{
st.push(v);
isVisited[i]=1;
System.out.print(" " + (i+1));
v = i;
}
}
}
}
}
이 줄 번호는 우리에게 도움이되지 않습니다. 이 문제의 원인이되는 특정 코드 행을 말씀해 주시겠습니까? – furkle
매트릭스가 어떤 크기인지 알 수 있고, 시작점에 입력 할 숫자는 무엇입니까? 또한 디버거를 사용하여이 단계를 진행하는 것이 좋습니다. 그렇게 한 경우 매우 빨리 문제를 찾을 수있을 것입니다. 마지막으로, 문제가 발생한 줄을 알려줄 필요가 있습니다. 목록에 줄 번호가 없으므로 번호가 전혀 도움이되지 않습니다. –