做公交和地铁换乘 使用邻接矩阵,用弗洛伊德算法得出2点最短路径,矩阵的形式如下
public int[,] busline = {
{32,14,15,20,19,18,17,30,31,-1,-1,-1,-1,-1,-1,-1,-1},
{33,34,35,36,38,39,37,40,41,42,28,43,44,15,45,-1,-1},
{15,12,11,10,46,47,48,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
{50,51,49,37,40,41,42,27,10,11,45,-1,-1,-1,-1,-1,-1},
{1,2,6,3,4,5,0,7,8,9,10,11,12,13,14,15,16},
{17,18,19,20,15,14,13,12,21,22,23,-1,-1,-1,-1,-1,-1},
{6,24,25,26,0,7,8,9,10,27,28,29,19,18,17,30,31}
};//存储公交路线.
上面每个点是一个站点ID,每一行是一条公交线路当然上面的数据只是例子,实例中是从数据库读取生成。如果只是求单纯的换乘那是没问题的,因为只要两线路中有共同站点,就说明这两条线路是连通的,但假设那两条线没共同站点,但有两站点靠的很近,那么就算步行过到那个站。如果是这样的话,用佛洛依德算法好想不好用了,找不到连通点。现在地铁的已经OK了,就是需要联合查询,请高手给个方法
public int[,] busline = {
{32,14,15,20,19,18,17,30,31,-1,-1,-1,-1,-1,-1,-1,-1},
{33,34,35,36,38,39,37,40,41,42,28,43,44,15,45,-1,-1},
{15,12,11,10,46,47,48,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
{50,51,49,37,40,41,42,27,10,11,45,-1,-1,-1,-1,-1,-1},
{1,2,6,3,4,5,0,7,8,9,10,11,12,13,14,15,16},
{17,18,19,20,15,14,13,12,21,22,23,-1,-1,-1,-1,-1,-1},
{6,24,25,26,0,7,8,9,10,27,28,29,19,18,17,30,31}
};//存储公交路线.
上面每个点是一个站点ID,每一行是一条公交线路当然上面的数据只是例子,实例中是从数据库读取生成。如果只是求单纯的换乘那是没问题的,因为只要两线路中有共同站点,就说明这两条线路是连通的,但假设那两条线没共同站点,但有两站点靠的很近,那么就算步行过到那个站。如果是这样的话,用佛洛依德算法好想不好用了,找不到连通点。现在地铁的已经OK了,就是需要联合查询,请高手给个方法
解决方案 »
- ASP.NET(C#)
- 如何建立一棵普通树??谢谢!!~
- 如何在win ce下设置图片的3D凸起效果?(C#)
- NHibernate, Database mapping.... Dot Net
- m_objSheet.PageSetup.PaperSize= papersize不知道如何填
- c#写的MDI,现在想让子窗体右上脚的关闭按钮也就是X失效或隐藏,如何做?
- 求一正则表达式,谢谢各位大侠! 来者有分,大家新年快乐!
- 一个关于DataGrid的问题?
- C#代码 怎么设置ListView中Checkbox 为选中状态
- 如何将两个DropDownList控件关联起来,在线等,请大家帮忙! 完事就结帖
- 中英文、全角半角转换问题
- Winform有中文的时候,第一次界面加载缓慢,求解~
for(k=0;k<n;k++)
for(i=0;i<n;i++)
if(i != k)
for(j=0;j<n;j++)
if(j != i){
if(A[i][k]+A[k][j]<A[i][j])
A[i][j] =A[i][k]+A[k][j];
}
}
那么就是说凡是[i][j]靠得很近,直接返回0就行了。