动态规划之所有点对的最短路径问题(Floyd算法)
2013-11-06 21:03
561 查看
#include<iostream> using namespace std; #define N 3 #define MAXINT 65535 void printBlank(int x);//输出空格 int main(){ //输入一个n*n的矩阵 int D ={{0,2,9},{8,0,6},{1,MAXINT,0}}; //输入矩阵 bool useDefault=false; cout<<"请输入一个3*3的矩阵(如要使用默认数据请输入-1,然后确定):"<<endl; for(int i=0;i<N&&!useDefault;i++){ for(int j=0;j<N&&!useDefault;j++){ cin>>D[i][j]; if(D[i][j]==-1){ D[i][j]=0; useDefault=true; } } } if(useDefault){ cout<<"默认输入矩阵为:"<<endl; for(int i=0;i<N;i++){ for(int j=0;j<N;j++){ cout<<D[i][j]; printBlank(D[i][j]); } cout<<endl; } cout<<endl; } //floyd算法求解 for(int k=0;k<N;k++){ for(int i=0;i<N;i++){ for(int j=0;j<N;j++){ D[i][j]=min(D[i][j],D[i][k]+D[k][j]); } } } cout<<"所有点对的最短路径如下:"<<endl; for(int i=0;i<N;i++){ for(int j=0;j<N;j++){ cout<<D[i][j]; printBlank(D[i][j]); } cout<<endl; } cout<<endl; system("pause"); return 0; } void printBlank(int x){ if(x>9) cout<<' '; else cout<<" "; }
以上是floyd算法的举例的代码。下面是运行结果:
至于该算法的一般性分析,请自行百度或者谷歌查阅相关资料。当然也可以在这里一起探讨。
相关文章推荐
- kamailio/openser/opensips 生成RPM包/RPM打包
- MapReduce的Job性能调优
- php获取客户端ip get_client_ip()
- 网络扫描技术揭秘读书笔记3-TCP/UDP端口扫描器设计原理
- SCOM2012功能测试(8)—创建端口监视
- Fedora9安装中文输入法
- mingw的安装
- 博文开始,梦想启航
- 实验8
- HDU-1540 Tunnel Warfare
- 守卫者的挑战-(概率dp)Poetize系列
- 网站压力测试工具,不用安装,在线进行【强烈推荐】
- 策略模式+反射
- 老徐FrankXuLei受邀为 @IGT中国研发中心 讲授《WCF分布式开发与SOA架构设计》课程
- 学习opencv----.../opencv/cxcore/inclue/cxtype.h
- ISO8583报文工具类(组装和解析报文)
- hdu 3395 Special Fish(费用流//KM匹配)
- 黑马程序员——java基础之数组与集合之间的点点滴滴
- 红黑树(RBTree)之删除结点图解
- ps调整图片大小,像素大小