用C语言实现弗洛伊德算法
时间: 2023-11-25 21:01:35 浏览: 70
好的,您可以通过下面的代码来实现弗洛伊德算法:
```c
#include <stdio.h>
#define INF 99999 // 无穷大
void floyd(int graph[][4], int n) {
int i, j, k, dist[n][n];
// 初始化最短路径为原图
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
dist[i][j] = graph[i][j];
}
}
// 通过中间节点k来更新图中任意两点i,j之间的最短路径
for (k = 0; k < n; k++) {
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (dist[i][k] + dist[k][j] < dist[i][j]) {
dist[i][j] = dist[i][k] + dist[k][j];
}
}
}
}
// 输出最短路径
printf("最短路径矩阵:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (dist[i][j] == INF) {
printf("INF ");
} else {
printf("%d ", dist[i][j]);
}
}
printf("\n");
}
}
int main() {
int graph[4][4] = {{0, 5, INF, 10},
{INF, 0, 3, INF},
{INF, INF, 0, 1},
{INF, INF, INF, 0}};
floyd(graph, 4);
return 0;
}
```
请注意,此算法中的图表示为邻接矩阵。在这里,我们将其表示为C的二维数组。如果你有其他的表示图的方式,请尝试修改代码。
阅读全文