本帖最后由 阿三 于 2013-11-25 18:11 编辑
比如我们需要到达某一个点,需要从最近的路径过去.看下图:
如果从瓦当出发,去古洞。那么,可以是瓦当—洛阳—南郡—古洞。。。瓦当—洛阳—冰峪—南郡—凤翔—古洞。。
怎么走才到,经过几个城市。路途最短怎么走。。。
这就是拓扑图最短路径算法了。
那遇到这样的图,我们怎么在代码上把图画出来呢。利用二维数组。比如,这个图。代码如下:
- 地图数组=数组[100][7]//定义一个二维数组,装每一座城市
- 地图数组[1][0]="瓦当",地图数组[1][1]=1,地图数组[1][2]=2,地图数组[1][3]=4
- 地图数组[2][0]="洛阳",地图数组[2][1]=2,地图数组[2][2]=1,地图数组[2][3]=3,地图数组[2][4]=4,地图数组[2][5]=5
- 地图数组[3][0]="冰峪",地图数组[3][1]=3,地图数组[3][2]=2,地图数组[3][3]=5,地图数组[3][4]=7
- 地图数组[4][0]="落水",地图数组[4][1]=4,地图数组[4][2]=1,地图数组[4][3]=2,地图数组[4][4]=5,地图数组[4][5]=6
- 地图数组[5][0]="南郡",地图数组[5][1]=5,地图数组[5][2]=2,地图数组[5][3]=3,地图数组[5][4]=4,地图数组[5][5]=6,地图数组[5][6]=7
- 地图数组[6][0]="凤翔",地图数组[6][1]=6,地图数组[6][2]=4,地图数组[6][3]=5,地图数组[6][4]=7,地图数组[6][5]=8
- 地图数组[7][0]="徐州",地图数组[7][1]=7,地图数组[7][2]=3,地图数组[7][3]=5,地图数组[7][4]=6
- 地图数组[8][0]="古洞",地图数组[8][1]=8,地图数组[8][2]=6
复制代码 地图数组[1] [0] 装地图名称 地图数组[1] [1]装地图代号 后面的装 地图所能到的其他地图代号
这儿,阿三是从1开始的,为了方便编号 ,不过TC来说,从0开始,大家以后做的时候 ,可以从0开始。
这样,我们就把这张图做出来了。
这样的话,值需要这样调用,如需要 "瓦当" 这个元素:
地图数组[1] [0],这样就行了!甚至可以这样:地图数组[地图数组[2][2] ][0].
这是什么意思呢?要一层一层的解析。括号里面的首先看喽。 地图数组[2][2]这个是地图2的第三个元素。结果返回的是1.那么就是:地图数组[1 ][0]了,这儿的1是地图数组[2 ][2] 的返回值。所有,地图数组[1 ][0] 和地图数组[地图数组[2][2] ][0]的值时一样的都是"瓦当"。
做了个控件,让其实现选择城市,然后在下面体现两个城市的寻路路径。
核心代码很短。
一共 24行搞定寻路核心代码。而且寻路利用堆栈算法。直接求得结果。效率应该算是很高的了。
脚本中详细介绍 栈 的实现 详细注释 更好的让大家了解堆栈的概念 。
tc项目文件:
|