公告版位
星落的瞬間!放棄的後悔是永遠!

遞迴解(參考W.J.S.大大的)

Dim F As Long

Private Sub Form_Load()

    Dim A() As String, I As Integer, S As String

    S = "1234"

    For I = 1 To Len(S)

        ReDim Preserve A(I) : A(I) = Mid(S, I, 1)

    Next

    F = FreeFile

    Open "C:\Test.txt" For Output As #F

    Cal(A(), "", Space(UBound(A)))

    Close #F

    Shell("notepad.exe C:\Test.txt", vbNormalFocus)

    End

End Sub

 

Sub Cal(ByVal A() As String, ByVal S As String, ByVal K As String)

    Dim I As Integer, X As String

    '原理就是用一個字串來判斷是否已經把數字用掉

    '原來是四個空白用掉的話就填成星"*"

    '之後判斷數字有沒有四個,有的話輸出結束這次遞迴

    '回到上一個呼叫的地方繼續做,因為一個迴圈從1~4所以一個組合完成了

    '那個判斷有沒有用掉數字的字串會回到上一個未改變的

    '繼續那個迴圈繼續遞迴,所以可以窮舉所有排列組合

    If Len(S) = UBound(A) Then

        '想要做的事

        Exit Sub

    End If

 

    For I = 1 To UBound(A)

        If Mid$(K, I, 1) = " " Then

            X = K : Mid$(X, I, 1) = "*"

            Cal(A(), S & A(I), X)

        End If

    Next

End Sub

 

創作者介紹

!壞人必需做好事!

讓地獄深紅的天亮 發表在 痞客邦 PIXNET 留言(2) 人氣()


留言列表 (2)

發表留言
  • 詩蔻蒂
  • 您好,請問你的程式碼可以借我參考嗎??我想一想不知道從何下手耶~~或者跟我講個方向也行~~非常謝謝你~~這題困擾我好久哦^^
  • 詩蔻蒂
  • 對不起~~我要問的是那個糊塗情報員的那一題啦~~迴響錯了:p
  • 喔了解,今晚PO好了。

    讓地獄深紅的天亮 於 2008/12/08 09:37 回覆

找更多相關文章與討論