汉诺塔.frm

来自「算法教案」· FRM 代码 · 共 77 行

FRM
77
字号
VERSION 5.00
Begin VB.Form Form1 
   Caption         =   "汉诺塔问题"
   ClientHeight    =   3960
   ClientLeft      =   60
   ClientTop       =   450
   ClientWidth     =   5940
   LinkTopic       =   "Form1"
   ScaleHeight     =   3960
   ScaleWidth      =   5940
   StartUpPosition =   3  '窗口缺省
   Begin VB.TextBox Text1 
      Height          =   375
      Left            =   3840
      MultiLine       =   -1  'True
      TabIndex        =   3
      Top             =   960
      Width           =   1095
   End
   Begin VB.CommandButton Command1 
      Caption         =   "计算"
      Height          =   375
      Left            =   3840
      TabIndex        =   2
      Top             =   2040
      Width           =   1095
   End
   Begin VB.ListBox List1 
      Height          =   2940
      ItemData        =   "汉诺塔.frx":0000
      Left            =   240
      List            =   "汉诺塔.frx":0002
      TabIndex        =   0
      Top             =   360
      Width           =   3135
   End
   Begin VB.Label Label1 
      Caption         =   "输入盘片数"
      Height          =   375
      Left            =   3840
      TabIndex        =   1
      Top             =   360
      Width           =   1095
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim num As Long

Sub hanoi(n As Integer, a As String, c As String, b As String) 'Hanoi过程四个参数分别是N个盘数,源柱,目标柱,帮助柱,过程的意思是将N个盘从源柱搬动到目标柱通过帮助柱帮助下。
    If (n = 1) Then                                       '当只有一个盘时
       num = num + 1
       List1.AddItem (Str(num) + ":" + a + "->" + c)      '搬动一个盘从源柱到目标柱
    Else
        Call hanoi(n - 1, a, b, c)                         '搬动N-1个盘从A柱到B柱,在C柱帮助下
        num = num + 1
        List1.AddItem (Str(num) + ":" + a + "->" + c)
        Call hanoi(n - 1, b, c, a)                        '搬动N-1个盘从A柱到B柱,在C柱帮助下
    End If
End Sub

Private Sub Command1_Click()
   Dim n As Integer
   n = Val(Text1.Text)
   Call hanoi(n, "A", "C", "B")       '将N个盘从源柱A柱搬动到目标柱C柱在帮助柱B柱帮助下
   List1.AddItem ("共" + Str(num) + "次")
End Sub

Private Sub Text1_Click()
  num = 0
  List1.Clear
  Text1.Text = ""
End Sub

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?