1旅游导游系统问题 (1)问题描述 假设一个旅游景区由n个不同景点组成(有向网),并用带权邻接矩阵表示,权值表示两个景点间的步行时间,试编写程序求任意两个景点间的最短步行时间。 (2)基本要求 实际上是求有向图中任意两顶点间的最短路径问题。利用Floyed算法编写函数实现求图的任意两点间的最短路径。实验步骤、c语言源代码
时间: 2024-03-20 16:42:45 浏览: 85
以下是使用 C 语言实现 Floyd 算法来解决旅游导游系统问题的源代码,具体实现步骤见注释:
```
#include <stdio.h>
#define MAX 100 // 定义最大顶点数
int main() {
int n; // n 为顶点数
int matrix[MAX][MAX]; // 邻接矩阵
int i, j, k;
printf("请输入顶点数: ");
scanf("%d", &n);
// 输入邻接矩阵
printf("请输入邻接矩阵:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &matrix[i][j]);
}
}
// Floyd 算法求任意两点间最短路径
for (k = 0; k < n; k++) {
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (matrix[i][j] > matrix[i][k] + matrix[k][j]) {
matrix[i][j] = matrix[i][k] + matrix[k][j];
}
}
}
}
// 输出任意两点间最短路径
printf("任意两点间最短路径如下:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
使用该程序,可以输入邻接矩阵来表示景区中的各个景点之间的步行时间,然后输出任意两个景点之间的最短步行时间。
阅读全文