写一个石家庄地铁两个站点之间最短换乘的Java代码
时间: 2023-05-13 22:07:24 浏览: 60
以下是一个简单的 Java 代码,用于计算石家庄地铁两个站点之间的最短换乘路线:
```
public class Subway {
private static final int INF = Integer.MAX_VALUE; // 无穷大
private static final int[][] graph = { // 地铁线路图
{0, 1, INF, INF, INF, INF, INF, INF, INF, INF},
{1, 0, 1, INF, INF, INF, INF, INF, INF, INF},
{INF, 1, 0, 1, INF, INF, INF, INF, INF, INF},
{INF, INF, 1, 0, 1, INF, INF, INF, INF, INF},
{INF, INF, INF, 1, 0, 1, INF, INF, INF, INF},
{INF, INF, INF, INF, 1, 0, 1, INF, INF, INF},
{INF, INF, INF, INF, INF, 1, 0, 1, INF, INF},
{INF, INF, INF, INF, INF, INF, 1, 0, 1, INF},
{INF, INF, INF, INF, INF, INF, INF, 1, 0, 1},
{INF, INF, INF, INF, INF, INF, INF, INF, 1, 0}
};
public static int shortestPath(int start, int end) {
int[] dist = new int[10];
boolean[] visited = new boolean[10];
for (int i = 0; i < 10; i++) {
dist[i] = INF;
visited[i] = false;
}
dist[start] = 0;
for (int i = 0; i < 9; i++) {
int u = -1;
for (int j = 0; j < 10; j++) {
if (!visited[j] && (u == -1 || dist[j] < dist[u])) {
u = j;
}
}
visited[u] = true;
for (int v = 0; v < 10; v++) {
if (graph[u][v] != INF && !visited[v]) {
dist[v] = Math.min(dist[v], dist[u] + graph[u][v]);
}
}
}
return dist[end];
}
public static void main(String[] args) {
int start = 0; // 起点
int end = 9; // 终点
int shortestPath = shortestPath(start, end);
System.out.println("从站点 " + start + " 到站点 " + end + " 的最短换乘路线为 " + shortestPath + " 站");
}
}
```
请注意,这只是一个简单的示例代码,可能并不完全准确或适用于所有情况。在实际应用中,您可能需要根据实际情况进行修改和调整。