VB探索法(回溯)应用于迷宫问题你

来源:互联网 发布:淘宝老年男模特沈老师 编辑:程序博客网 时间:2024/06/04 19:57
Private Sub MgPath(xi As Integer, yi As Integer, xe As Integer, ye As Integer)
Dim st(35) As zhan
Dim i, j, k, di, find As Integer
Dim Top As Integer
Top = -1
Top = Top + 1
st(Top).i = xi
st(Top).j = yi
st(Top).di = -1
mg(1, 1) = -1
Do While (Top > -1)
i = st(Top).i
j = st(Top).j
di = st(Top).di
 If (i = xe And j = ye) Then
  For k = 0 To Top
  Print st(k).i, st(k).j
   Next
 Exit Sub
 End If
 
find = 0
Do While (di < 4 And find = 0)
di = di + 1
Select Case di
Case 0: i = st(Top).i - 1
        j = st(Top).j
Case 1: i = st(Top).i
        j = st(Top).j + 1
Case 2: i = st(Top).i + 1
        j = st(Top).j
Case 3: i = st(Top).i
        j = st(Top).j - 1
End Select
If mg(i, j) = 0 Then find = 1
Loop
If find = 1 Then
st(Top).di = di
Top = Top + 1
st(Top).i = i
st(Top).j = j
st(Top).di = -1
mg(i, j) = -1
Else
mg(st(Top).i, st(Top).j) = 0
Top = Top - 1
End If
Loop
End Sub

0 0