N皇后的回溯算法
来源:互联网 发布:win10 网络电缆被拔出 编辑:程序博客网 时间:2024/04/30 13:14
Option Explicit
''N皇后互不攻击问题的回溯算法
Private Sub Command1_Click()
Dim n As Long
Dim i As Long, j As Long
Dim a() As Long
n = CLng(Text1.Text)
ReDim a(1 To n)
For i = 1 To n
a(i) = 1
Next
'*算法实现
'设i-1个皇后已经放好,判断第i个皇后的位置,如果和前面i-1个中的任意一个有攻击,则该皇后向前走一步.
'直到放好为止,如果该行没有位置可放,则表示前i-1个皇后的位置有问题,先将该第i个皇后回到第一列,
'再回溯到第i-1个皇后,将该皇后向前走一步,直到放好为止,如果不行,先将该皇后回一列,再回溯到第i-2个皇后.
'如此,直到所有皇后放好为止.
'---------------------------------------------------------------------------------------------
For i = 2 To n
10:
If a(i) <= n Then
For j = 1 To i - 1
If a(j) = a(i) Or Abs(a(i) - a(j)) = i - j Then a(i) = a(i) + 1: GoTo 10
Next
If i = n Then MsgBox "有解" ''要求多解的话,可以再继续
Else
a(i) = 1
i = i - 1
a(i) = a(i) + 1
If i = 1 Then
If a(i) > n Then MsgBox "无解": Exit Sub
i = 2
End If
GoTo 10
End If
Next
'---------------------------------------------------------------------------------------------
grd.Rows = 0
grd.Cols = 0
grd.Rows = n + 1
grd.Cols = n + 1
For i = 0 To n
grd.TextMatrix(0, i) = i
grd.TextMatrix(i, 0) = i
grd.ColWidth(i) = 225
Next
For i = 1 To n
grd.TextMatrix(i, a(i)) = "*"
Next
End Sub
- N皇后的回溯算法
- n皇后的拉斯维加斯回溯算法
- 八皇后及N皇后的回溯与递归算法
- N 皇后求解回溯算法
- 回溯算法n皇后问题
- 关于N皇后问题高效试探回溯算法的分析
- 关于N皇后问题高效试探回溯算法的分析
- 关于N皇后问题高效试探回溯算法的分析
- 回溯算法之N皇后问题的求解
- N皇后问题--回溯算法的经典实例
- 求 N 皇后问题回溯算法
- n皇后问题——回溯算法
- 回溯算法之 N皇后问题
- 回溯算法之N皇后问题
- 回溯算法—n皇后问题
- 求 N 皇后问题回溯算法
- N皇后问题——回溯算法
- php回溯算法解决n皇后问题
- How to Detect a Dialup Connection?
- Including a DropDownListBox in an Editable DataGrid...
- What have you done to the Earth, hackers?
- 拿破仑轶事
- 访问数据库程序的一般步骤
- N皇后的回溯算法
- Multi-row Editing in the ASP.NET DataGrid...
- 字符串匹配的KMP算法
- Highlighting Rows in an ASP.Net DataGrid...
- 简体中文 Windows Media Player 10.00.00.3646
- Empowering the ASP.Net Button Web Control, Confirm?...
- 通过WMI列出Windows系统进程(VB.net)
- 征人帮我对Unix数据库进行攻击!
- 041006 A DB 乱码