当前位置: 代码迷 >> vbScript >> 求个路径算法,用vbs实现解决办法
  详细解决方案

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

热度:1868   发布时间:2013-02-26 00:00:00.0
求个路径算法,用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了

代码只是大概的框架,有什么问题可以再一起研究...
  相关解决方案