马上加入TC
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
求一个能把按键代码转成TC代码的高手帮忙转换下代码!!!(回复好的绝对采纳)
Dim m(9) '根据你的地图,建立大小合适的数组
m(0) = "1-2,3" '表示第一个点能到达2,3
m(1) = "2-3,1,6"
m(2) = "3-1,2,4,6"
m(3) = "4-3,5,6"
m(4) = "5-4,6"
m(5) = "6-2,3,4,5,7"
m(6) = "7-6,10,8"
m(7) = "8-10,9,7"
m(8) = "9-8"
m(9)="10-7,8"
//起点地图名
qidian = "1"
//终点名
zhongdian="9"
//以下都不需要改
mn=ubound(m)
Dim a()
ReDim a(1,mn)
For i = 0 To ubound(m)
mm = split(m(i), "-")
a(0, i) = mm(0)
a(1,i)=mm(1)
Next
Dim jg()
Redim Preserve jg(0)
Dim ls
ls=""
Call sz("", qidian, zhongdian, ls)
ss = ""
//无法到达
If ubound(split(jg(0),"-")) < 2 Then
MessageBox "无法到达"
Goto 脚本结束
End If
//对输出结果格式处理
For i = 0 To ubound(jg)-1
jg(i)=mid(jg(i),2,len(jg(i)))
ss=ss&vbcr&jg(i)
Next
MsgBox ss,64+4096,"拓扑寻路 By:fengerccsyk3"
zd = 10000
lll = ""
//计算最短路径
For i = 0 To ubound(jg) - 1
ddd = split(jg(i), "-")
If ubound(ddd) < zd Then
zd = ubound(ddd)
lll = jg(i)
Elseif ubound(ddd) = zd Then
lll=lll+"|"+jg(i)
End If
Next
MessageBox "最短线路为" & lll
Rem 脚本结束
//递归计算路径
sub sz(syg, zg, mdd, lx)
Dim i
Dim b
Dim c
ls = lx
//得到该节点
For i = 0 To mn
If a(0, i) = zg Then
b=a(1,i)
End If
Next
//链接
ls = ls + "-" + zg
d = split(ls, "-")
//发现有重复元素判断为错误路径
For i = 0 To ubound(d)
For j = 0 To ubound(d)
If i = j Then
Else
If d(i) = d(j) Then
Goto 结束
End If
End If
Next
Next
//判断是否为目的地
If zg = mdd Then
n = ubound(jg)
jg(n) = ls
Redim Preserve jg(n + 1)
Else
c = split(b, ",")
For i = 0 To ubound(c)
If c(i) = syg Then
Else
Call sz(zg, c(i), mdd, ls)
End If
Next
End If
Rem 结束
ls = lx
End sub
|