[图] 医院选址问题 - 最短路径Floyd应用 - C语言实现

本文通过一个医院选址的问题,介绍了如何利用Floyd算法求解最短路径,并给出了具体的C语言实现代码,详细阐述了问题背景、解决思路及最终结果。

【问题背景】

已知有向图的邻接矩阵如下图所示,需在其中一个结点建立医院
	要求:
		1. 该结点距其他各个结点的最长往返路径最短
		2. 相同条件下总的往返路程越短越好
	矩阵:
		0	13	∞	4	∞
		13	0	15	∞	5
		∞	∞	0	12	∞
		4	∞	12	0	∞
		∞	∞	6	3	0

【思路】

最长往返路径
		1. 该矩阵是一个有向图,也就是说A->B的路径,可能并不是B->A的路径
		2. 最长往返路径= A->B的路径长度 + B->A的路径长度
	思路:最短路径的应用问题
		1. 求出任意两点之间的最短路径长度
		2. 遍历每一个结点,计算该结点到其余结点的最长往返路径max,总的SUM
		3. 取出max最小的,即为医院的地址
			其中,max相同的话,看sum,sum最小的为医院的地址
	使用算法:
		常用的最短路径算法有Dijkstra与Floyd
		1. Dijkstra常用与一个结点到其余各点的最短路径的情景
		2. Floyd常用与求任意两点的最短路径
		这里我们选Floyd更方便

【结果】
在这里插入图片描述

【代码】

#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

geodoer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值