‘无解!程序证明只能走过23个点:
Private Sub Command1_Click()
Dim B(4, 4), n
n = f(4, 0, B, 1)
Debug.Print n
'23
End Sub
Private Function f(ByVal X As Integer, ByVal y As Integer, ByVal a As Variant, ByVal t As Integer) As Integer
Dim aa(4, 4)
Dim F1 As Integer, F2 As Integer, F3 As Integer, F4 As Integer
If X = 4 And y = 1 Then
f = 0
Exit Function
End If
For F1 = 0 To 4
For F2 = 0 To 4
aa(F1, F2) = a(F1, F2)
Next F2
Next F1
F1 = 0: F2 = 0: F3 = 0: F4 = 0
aa(X, y) = 1
If X + 1 < 5 Then
If aa(X + 1, y) <> 1 Then
F1 = f(X + 1, y, aa, t + 1) + 1
End If
End If
If X - 1 >= 0 Then
If aa(X - 1, y) <> 1 Then
F2 = f(X - 1, y, aa, t + 1) + 1
End If
End If
If y - 1 >= 0 Then
If aa(X, y - 1) <> 1 Then
F3 = f(X, y - 1, aa, t + 1) + 1
End If
End If
If y + 1 < 5 Then
If aa(X, y + 1) <> 1 Then
F4 = f(X, y + 1, aa, t + 1) + 1
End If
End If
f = IIf(F1 > F2, F1, F2)
f = IIf(f > F3, f, F3)
f = IIf(f > F4, f, F4)
End Function