小说幻城的结局是什么:跳马问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/07 07:57:50
在5*5格的棋盘上,
从1点出发,
按日字跳马,
要求不重复地跳经所有方格。
求出符合要求的所有方案?

共304种
附VB源代码:
Private SDat(1 To 5, 1 To 5) As Boolean
Private SDatCT As Long
Private Cnt As Long
Private MaxN As Long
Private CT(1 To 25, 1 To 2) As Long
Private Sub Command1_Click()
Open App.Path + "\otN.txt" For Output As #2
Open App.Path + "\ot.txt" For Output As #1
'For i = 1 To 5
'For j = 1 To 5
MaxN = 0
CL 1, 1
'Print #2, MaxN
'Next j
'Next i
Close #2
Close #1
End Sub
Private Sub CL(ByVal i As Long, ByVal j As Long)
If SDat(i, j) = True Then Exit Sub
SDat(i, j) = True
SDatCT = SDatCT + 1
If SDatCT > MaxN Then MaxN = SDatCT
CT(SDatCT, 1) = i
CT(SDatCT, 2) = j
If SDatCT = 25 Then '最后一个
Cnt = Cnt + 1
Print #1, "方法编号:" + CStr(Cnt)
For k = 1 To 25
Print #1, CStr(k) & "," & CStr(CT(k, 1)) & "," & CStr(CT(k, 2))
Next k
Else
If (i > 2) Then
If j > 1 Then CL i - 2, j - 1 '左
If j < 5 Then CL i - 2, j + 1 '左
End If
If (i < 4) Then
If j > 1 Then CL i + 2, j - 1 '右
If j < 5 Then CL i + 2, j + 1 '右
End If
If (j > 2) Then
If i > 1 Then CL i - 1, j - 2 '上
If i < 5 Then CL i + 1, j - 2 '上
End If
If (j < 4) Then
If i > 1 Then CL i - 1, j + 2 '下
If i < 5 Then CL i + 1, j + 2 '下
End If
End If
SDatCT = SDatCT - 1
SDat(i, j) = False
End Sub
Private Sub Form_Load()
MaxN = 0
For i = 1 To 5
For j = 1 To 5
SDat(i, j) = False
Next j
Next i
SDatCT = 0
Cnt = 0
End Sub

。 。 。 。 。
。 。 。 。 。
。 。 。 。 。
。 。 。 。 。
。 。 。 。 。

不会哦。。