校园导游与最短路径c语言代码
发布网友
发布时间:2024-04-02 08:04
我来回答
共1个回答
热心网友
时间:2024-08-20 18:25
以下是一个简单的校园导游和最短路径的C语言代码示例:
```c
#include
#include
#define MAX_N 10 // 最大节点数
int graph[MAX_N][MAX_N]; // 图的邻接矩阵表示
int dist[MAX_N]; // 存储从起点到每个节点的最短距离
// 查找从起点到终点的最短路径
void shortest_path(int start, int end) {
int i, j;
for (i = 0; i < MAX_N; i++) {
dist[i] = graph[start][i]; // 初始化距离为起点到起点的距离
}
dist[start] = 0; // 将起点设为最短距离为0
for (i = 0; i < MAX_N; i++) {
for (j = 0; j < MAX_N; j++) {
if (dist[j] == -1) continue; // 如果j节点未访问过,跳过
if (graph[j][i] != -1) { // 如果j节点和i节点之间存在边,更新距离
dist[i] = min(dist[i], dist[j] + graph[j][i]);
}
}
}
printf("从起点到终点的最短路径长度为:%d\n", dist[end]); // 输出最短路径长度
}
int main() {
int n, start, end;
printf("请输入校园中点的数量:");
scanf("%d", &n);
printf("请输入起点和终点的编号:");
scanf("%d%d", &start, &end);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
graph[i][j] = -1; // 将所有节点之间的距离初始化为-1,表示没有边连接
}
}
graph[start][end] = 0; // 建立起点到终点的边,距离为0
printf("从起点到终点的最短路径为:");
shortest_path(start, end); // 调用最短路径函数,输出结果
return 0;
}
```
这个代码示例使用邻接矩阵表示图,通过深度优先搜索算法实现最短路径查找。在主函数中,首先输入校园中点的数量和起点和终点的编号,然后初始化所有节点之间的距离为-1,表示没有边连接。接着建立起点到终点的边,并调用最短路径函数查找从起点到终点的最短路径。最后输出最短路径的结果。请注意,这只是一个简单的示例代码,实际应用中需要根据具体情况进行修改和完善。