关于对Floyd算法的思索
来源:互联网 发布:晨曦预算软件视频教程 编辑:程序博客网 时间:2024/05/16 13:43
这个问题困扰我很久了,终于还是上机得到了证实,实践出真知啊!
将循环的顺序改为倒置一样是正确的【不论是 k,i,j 中的一个或者几个倒置,都是正确的】,如果倒置了就不能理解为:加入前K个点时的最短路,而是理解为每个点加入都是当前最短路。。。
正序之代码:
#include <stdio.h>#define MAX 999999int main(){//无向无环图的floydint map[6][6];int i,j;for(i=0;i<6;i++)for(j=0;j<6;j++)map[i][j]=MAX;//自己到自己的距离是0for(i=0;i<6;i++)map[i][i]=0;//initmap[1][2]=map[2][1]=10;map[1][3]=map[3][1]=4;map[2][3]=map[3][2]=5;map[2][4]=map[4][2]=2;map[4][3]=map[3][4]=1;printf("Floyd中......\n");//Floyd正式开始,只有四个点int k;for(k=1;k<=4;k++)for(i=1;i<=4;i++)for(j=1;j<=4;j++)//displayif(map[i][j]>map[i][k]+map[k][j]){map[i][j]=map[i][k]+map[k][j];printf("已更新:map[%c][%c] = %d\n",i+'A'-1,j+'A'-1,map[i][j]);}//Floyd结束printf("最终:\n");for(i=1;i<=4;i++)for(j=1;j<=4;j++)printf("map[%c][%c] = %d\n",i+'A'-1,j+'A'-1,map[i][j]);return 0;}
上面代码描述的图是:
运行结果是:
一倒序:
for(k=4;k>=1;k--)for(i=1;i<=4;i++)for(j=1;j<=4;j++)
三倒序:
for(k=4;k>=1;k--)for(i=4;i>=1;i--)for(j=4;j>=1;j--)
- 关于对Floyd算法的思索
- 最短路--关于对floyd算法的理解
- 对Floyd算法的理解
- 对学习的一些思索
- 对一碗牛肉面的思索
- 对教育的一点点思索
- 关于HR的一点思索
- 关于技术的一些思索
- 关于Spring的一点思索.
- 关于“免费经济学”的思索!
- 关于未来的一些思索
- 关于二叉树重构的思索
- 对Swing线程的再思索 (上)
- 对Swing线程的再思索 (下)
- 对Swing线程的再思索 (上)
- 对Swing线程的再思索 (下)
- 对Swing线程的再思索
- 对Swing线程的再思索 (上)
- 我读研的目的就是为了找到一份更好的工作
- ubuntu安装软件中出现依赖性错误无法安装解决办法
- Oracle 11gR2 RAC安装入门培训-视频分享
- VC 注册表操作
- 开始学android
- 关于对Floyd算法的思索
- linux下的tar打包命令示例及详解
- windows8.1网络受限
- matlab ode45 函数传自定义参数用法及定步长ode5解算函数
- 对大学专业知识的期望跟目标
- android JNI NDK
- poj 1463 Strategic game(树形DP)
- vmlinuz、zImage和uImage的区别
- HMTL DOM结构