Dim method(3) As dian, lj(50) As dian, lj2(50) As dian
Dim herep As dian, nextp As dian
Dim qidian As dian, zhongdian As dian
Dim sum As Long
Dim k As Integer, g As Integer
Dim m As Integer, n As Integer
Dim ytlj As String, sylj As String
Private mand1_Click()
= ""
ytlj = ""
'初始化棋盘的偏移值
method(0).xzb = 2: method(0).yzb = 1
method(1).xzb = 2: method(1).yzb = -1
method(2).xzb = 1: method(2).yzb = 2
method(3).xzb = 1: method(3).yzb = -2
'初始化棋盘的当前位置
= 1: = 1
m = Val(InputBox("通过键盘输入棋盘的横坐标n(2-50的整数):", "棋盘的横坐标"))
n = Val(InputBox("通过键盘输入棋盘的纵坐标m(2-50的整数):", "棋盘的纵坐标"))
If m < 2 Or n < 2 Or m > 50 Or n > 50 Then
MsgBox "输入的数值超出规定范围,请你重新输入!"
Else
flag = find(n, m) '在记录集中从头查找符合指定条件的记录, 若找到则将查找到的记录作为当前记录调用find函数,在下面有定义
If flag = 1 Then
For i = 1 To k
ytlj = ytlj + "(" + Trim(Str(lj(i).xzb)) + "," + Trim(Str(lj(i).yzb)) + ")——>"
If i Mod 5 = 0 Then ytlj = ytlj + Chr(13) + Chr(10) '五个点为一行为了简单醒目
Next i
ytlj = ytlj + "(" + Trim(Str(n)) + "," + Trim(Str(m)) + ")" '没有合适的路径的时候呆在原来的位置
Else: ytlj = "No" '通过循环查找没有合适的路径,则输出NO
End If
= ytlj '把找到的路径显示出来,通过五个点为一行显示在文本框中
End If '结束路径的查找
End Sub
'在n×m的棋盘上寻找从左下角到右上角的一条路径
Private Function find(n, m) '定义find函数,实现其功能
'初始化变量opti(主要是用来标记是哪种走的那一种移动发法)和运用栈顶元素指针k
opti = 0: k = 0
'能否向下一位置进行移动
Do While Not ( = n And = m) '不在原地点就可以满足循环的条件
Do While opti
骑士漫游源代码 来自淘豆网m.daumloan.com转载请标明出处.