为什么Floyd算法中k必须放在最外层

https://www.zhihu.com/question/30955032 可以看下知乎这个问题。 我之前一直以为我明白了这个算法,结果发现自己只是会打模版而已,这个算法的实际是动态规划
这里写图片描述

这个解释的非常好啊,就是知乎上的最高票答案,你要知道他是从上一层k转移过来的所以当前的f[i][j]都应该是完成上一层动态规划的,如果k不是在最外层,那么f[i][j]就不是完成上一层动态规划的后的状态,有可能有的点没有经过k-1这个点的松弛。

我尝试了一下,开三维数组把k放在最内层,但有时会更新不完,如POJ 3660,我用了如下代码也A掉了,但正确的写法仍然是要把k放在最外层,注意注意

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmat
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值