網路城邦
回本城市首頁 唐老鴨之家
市長:  副市長:
加入本城市推薦本城市加入我的最愛訂閱最新文章
udn城市資訊科技網路分享【唐老鴨之家】城市/討論區/
討論區Excel VBA 字體:
上一個討論主題 回文章列表 下一個討論主題
孔明九連環問題求解 VBA 程式
 瀏覽1,006|回應0推薦0


等級:6
留言加入好友
Rem ==== 九連環問題求解 ====
Rem 注意─有兩個optionbutton元件
Dim k As Integer

Private Sub CommandButton1_Click()
Num = Cells(1, 1) '環數
k = 1
If (OptionButton1.Value) Then '上環
Cells(2, 1) = "MOVE " & Num & " RINGS UP"
Call Up(Num)
Else '下環
Cells(2, 1) = "MOVE " & Num & " RINGS DOWN"
Down (Num)
End If
Cells(k + 2, 1) = "IT TAKES " & k & " MOVES"
End Sub

Sub Up(nn)
If nn > 0 Then
Call Up(nn - 1)
Call Down(nn - 2)
Cells(k + 2, 1) = "RING " & nn & " UP"
k = k + 1
Up (nn - 2)
End If
End Sub

Sub Down(nn)
If nn > 0 Then
Call Down(nn - 2)
Cells(k + 2, 1) = "RING " & nn & " DOWN"
k = k + 1
Call Up(nn - 2)
Call Down(nn - 1)
End If
End Sub


' 規則:
' DOWN(N)=DOWN(N-2)+"N DOWN"+UP(N-2)+DOWN(N-1)
' UP(N)=UP(N-1)+DOWN(N-2)+"N UP"+UP(N-2)
' N為偶數時, 移動次數 = 1/3*(2^(N+1)-2)
' N為奇數時, 移動次數 = 1/3*(2^(N+1)-1)

本文於 修改第 1 次
回應 回應給此人 推薦文章 列印 加入我的文摘

引用
引用網址:https://city.udn.com/forum/trackback.jsp?no=58536&aid=5318591