首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > vbScript >

求个路径算法,用vbs实现解决办法

2012-02-16 
求个路径算法,用vbs实现假设有多维数组如下:a(0,0) 1a(0,1) 0a(0,2) 2a(1,0) 1a(1,1) 0a(1,2)

求个路径算法,用vbs实现
假设有多维数组如下:
a(0,0) = 1
a(0,1) = 0
a(0,2) = 2

a(1,0) = 1
a(1,1) = 0
a(1,2) = 3

a(2,0) = 2
a(2,1) = 1
a(2,2) = 4

a(3,0) = 2
a(3,1) = 1
a(3,2) = 5

a(4,0) = 2
a(4,1) = 1
a(4,2) = 6

a(5,0) = 4
a(5,1) = 2
a(5,2) = 6
它所示的结构为 
1,0,2
1,0,3
2,1,4
2,1,5
2,1,6
4,2,6

1,0,2这行数据,第一位表示当前节点,中间一位为第一位的父节点,最后一位为第一位的子节点,以此类推。如果父节点为0,表明当前节点为根节点。

根据上面的数据可以推出全部路径为下:

1-2-4-6
1-2-5
1-2-6
1-3

这四种路径,求实现方法。


[解决办法]
根据上面的内容可以很简单的组成字符串(用“&”连接起来就可以)分别为:
1-2(组成字符串的时候就可以判断中间的是否为"0")
1-3
1-2-4
1-2-5
1-2-6
2-4-6
假设
(1)字符串存在数组ArryList中;
(2)函数Front(str,len)是实现截取str字符串前len个的函数
(3)函数Back(str,len)是实现截取str字符串后len个的函数

for i=0 to Ubound(ArryList)
for j=0 to Len(ArryList(i))
tempstr=Back(ArryList(i),j)
for k=i to Ubound(ArrayList)
tempstr1=Front(ArrayList(k),j)
if tempstr=tempstr1 Then
ArryList(k)=Front(ArryList(i),Len(ArryList(i)-j))&ArryList(k)
'上面这一步第一次执行是1-2的最后一个字符和2-4-6 前一个字符一样,这样就将最后一个更新为1-2-4-6
exit for
End if
Next
Next
Next
经过上面的操作后的结果是:
1-2
1-3
1-2-4
1-2-5
1-2-6
1-2-4-6
最后循环一次把包含的去掉就OK了

代码只是大概的框架,有什么问题可以再一起研究...

热点排行