인접 행렬 생 성 그림
인접 행렬 이 그림 을 만 드 는 과정 은 바로 2 차원 배열 에 값 을 부여 하 는 과정 이다.
그림 의 데이터 구조:
public class Graph {
String[] vertex = new String[5]; //
int[][] edge = new int[5][5]; //
.... // , get,set
}
구현 및 테스트:
public class GraphApp {
public static void main(String[] args){
Graph g = createGraphByMatrix();
printGraph(g);
}
/**
*
* {A,B,C,D,E}
* {(A,B),(B,C),(C,D),(D,E),(E,A),(A,C)} ->{(0,1),(1,2),(2,3),(3,4),(4,1),(0,2)}
*
*/
public static Graph createGraphByMatrix(){
Graph g = new Graph();
Scanner sc = new Scanner(System.in);
// ,
for(int i = 0; i < g.getVertex().length; i++){
System.out.println(" :");
String vertexName = sc.next();
g.getVertex()[i] = vertexName;
}
//
for(int i = 0; i < g.getVertex().length; i++){
for(int j = 0; j < g.getVertex().length; j++){
g.getEdge()[i][j] = 0; // 0
}
}
//
System.out.println(" :");
int edgeNum = sc.nextInt();
int edgeMaxNum = g.getVertex().length * (g.getVertex().length-1)/2; // n*(n-1)/2
if(edgeNum > edgeMaxNum){
System.out.println(" !");
System.exit(0);
}
//
for(int i = 0; i < edgeNum; i++){
System.out.println(" (vi,vj) i");
int edgI = sc.nextInt();
System.out.println(" (vi,vj) j");
int edgJ = sc.nextInt();
System.out.println(" (vi,vj) :");
int weight = sc.nextInt();
g.getEdge()[edgI][edgJ] = weight;
g.getEdge()[edgJ][edgI] = weight; // a[i][j] = a[j][i]
}
return g;
}
private static void printGraph(Graph g){
for(int i = 0; i < g.getVertex().length; i++){
System.out.print(g.getVertex()[i] + " ");
}
System.out.println();
for(int i = 0; i < g.getVertex().length; i++){
for(int j = 0; j < g.getVertex().length; j++){
System.out.print(g.getEdge()[i][j] +" ");
}
System.out.println();;
}
}
}
인쇄 결과:
A B C D E 0 1 6 0 0 1 0 2 0 5 6 2 0 3 0 0 0 3 0 4 0 5 0 4 0
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.