📄 route.java
字号:
/** * Algorithm for the routes */public class Route{ public int EdgeNum; public int[][] Edge = new int[50][3]; private int start,end; private int Max = 999; private int VertexNum = 50; private int[][] Graph = new int[50][50]; private int[] Visited = new int[50];//search recode private int[][] Distance = new int[50][50];//total distance Route (int a, int b) { start = a; end = b; } public int[] showRoutes(int start, int end) { int BeginVertex = start;//start station number int endnumber = end;// end station number int i,j; for(i=0; i<VertexNum; i++) { for(j=0; j<VertexNum; j++) Graph[i][j]=Max; } for(i=0; i<EdgeNum; i++) { CreateMGraph(Edge[i][0],Edge[i][1],Edge[i][2]); } calculate(BeginVertex); int dis=Distance[0][endnumber]; int k = endnumber; int temp = VertexNum-2; int[] passed = new int[VertexNum]; passed[0] = dis; passed[1] = BeginVertex; passed[VertexNum-1] = endnumber; for(int l=1; l<VertexNum; l++) { if( Distance[l][k] != 0 ) { passed[temp] = Distance[l][k]; k= Distance[l][k]; l = 0; temp--; } } return passed; } public void CreateMGraph(int Vertice1,int Vertice2,int Weight) { Graph[Vertice1][Vertice2]=Weight; } public void calculate(int Begin) { int MinEdge; int Vertex = 0; int i,j; int Edges; int k = 1; Edges=1; Visited[Begin] = 1; for(i=1; i<VertexNum; i++) { Distance[0][i] = Graph[Begin][i]; } Distance[0][Begin] = 0; while( Edges < (VertexNum-1) ) { Edges++; MinEdge = Max; for(j=1; j<VertexNum; j++) { if( Visited[j]==0 && MinEdge> Distance[0][j] ) { Vertex = j; MinEdge = Distance[0][j]; } } Visited[Vertex] = 1; for(j=1; j<VertexNum; j++) { if( Visited[j]==0 && Distance[0][Vertex]+Graph[Vertex][j]<Distance[0][j] ) { Distance[0][j] = Distance[0][Vertex]+Graph[Vertex][j]; Distance[k][j] = Vertex; } } k++; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -