GPLT L2-001. 紧急救援【Dijkstra】

使用Dijkstra算法解决紧急救援问题,包括找出最短路径、计数不同最短路径及其人数,并记录最短路径。通过额外的数组记录路径数量和人数,当遇到相等最短路径时进行更新。最终,通过链表方式记录路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:紧急救援

思路:

看下问题:

(1)求最短路径;

(2)记录不同最短路径的个数即最短路径可能存在多条相同的值,但路径不同;

(3)在最短路径的基础上筛选人数最多的一条路径;

(4)记录路径。

求解:

利用最基本的Dijkstra直接可求出问题(1);

而问题(2)和(3)其实同解问题(1)一样,只需再添加俩个数组,分别记录到每个点路径个数和人数即可。

记录路径条数:当筛选最短路径时,只需记录将当前路径个数数组等于上一步的路径个数即可,而当出现相等的路径时,将上一步的路径个数累加到当前路径个数数组。

记录人数:只需当出现相等的最优解路径时,进行比较当前的人数后更新最优解人数即可。

而问题(4)就是同链表一样,记录上一结点即可:只需每次进行选取最优解时用一个数组进行记录上一步的位置即可,因为每个点只出现一次,所有记录路径时不会出现覆盖情况。

参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值