欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

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

更新时间: 2014-01-05 01:52:37 责任编辑: Author_N1

 

求个路径算法,用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了

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

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 01:52:37
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/2400/
本文WWW.DOC100.NET DOC100.NET版权所有。