Ciao,
dato un array bidimensionale (labirinto) , una cella di partenza p e una cella di arrivo a, devo creare una funzione che mi dica se è possibile andare da p ad a passando solo per celle di valore 0 (le celle di valore 1 rappresentano i muri). Uso VB 5.0
Devo utilizzare una pila
Ho buttato giu un po di codice ma sono in difficoltà, mi sapete dare uno spunto per realizzare la cosa nel modo più semplice ?
Codice PHP:
Dim labirinto(1 To 5, 1 To 5) As Integer
Dim x As Integer
Dim y As Integer
Private Sub Form_Load()
labirinto(1, 1) = 0
labirinto(1, 2) = 0
labirinto(1, 3) = 0
labirinto(1, 4) = 1
labirinto(1, 5) = 0
labirinto(2, 1) = 0
labirinto(2, 2) = 1
labirinto(2, 3) = 1
labirinto(2, 4) = 1
labirinto(2, 5) = 0
labirinto(3, 1) = 0
labirinto(3, 2) = 0
labirinto(3, 3) = 0
labirinto(3, 4) = 1
labirinto(3, 5) = 1
labirinto(4, 1) = 0
labirinto(4, 2) = 1
labirinto(4, 3) = 0
labirinto(4, 4) = 0
labirinto(4, 5) = 0
labirinto(5, 1) = 0
labirinto(5, 2) = 0
labirinto(5, 3) = 1
labirinto(5, 4) = 1
labirinto(5, 5) = 0
'Partenza
x = 1
y = 1
'Arrivo
a_x = 5
a_y = 5
Call raggiungiDestinazione(x, y)
End Sub
Private Sub raggiungiDestinazione(ByRef x As Integer, ByRef y As Integer)
If (x <> a_x And y <> a_y) Then
'Provo ad andare a destra
If labirinto(x, y + 1) = 0 Then
y = y + 1
'push(x,y)
Call raggiungiDestinazione(x, y)
End If
'Provo ad andare a sinistra
If labirinto(x, y - 1) = 0 Then
y = y - 1
'push(x,y)
Call raggiungiDestinazione(x, y)
End If
'Provo ad andare in su
If labirinto(x - 1, y) = 0 Then
x = x - 1
'push(x,y)
Call raggiungiDestinazione(x, y)
End If
'Provo ad andare in giù
If labirinto(x + 1, y) = 0 Then
x = x + 1
'push(x,y)
Call raggiungiDestinazione(x, y)
End If
Else
MsgBox ("Arrivato a destinazione !")
End If
End Sub