2011年4月11日 星期一

第2題.排列組合

在輸入檔in2.txt中,只有1行不複的英文字串,長度最小1,最長為10。
請將此英文字串的所有排列組合輸出到out2.txt中,不計順序,並在所有組合數,輸出在最後1行。
輸入範例:in2.txt
xyz
輸出範例:out2.txt
xyz
xzy
yzx
yxz
zxy
zyx
6

3 則留言:

  1. Dim c1
    Private Sub Form_Load()
    Me.Hide
    Open App.Path & "\out2.txt" For Output As #2
    Open App.Path & "\in2.txt" For Input As #1

    Input #1, n
    Call c("", n)
    Print #2, c1
    Close #1
    Close #2
    End
    End Sub
    Sub c(a1, b1)
    If Len(a1) = Len(b1) Then
    Print #2, a1
    c1 = c1 + 1
    Else
    For i = 1 To Len(b1)
    If InStr(a1, Mid(b1, i, 1)) = 0 Then Call c(a1 & Mid(b1, i, 1), b1)
    Next i
    End If
    End Sub

    回覆刪除
  2. Dim c As Integer
    Private Sub Form_Load()
    Me.Hide
    Dim N As String
    Open App.Path & "\in2.txt" For Input As #1
    Open App.Path & "\out2.txt" For Output As #2
    Input #1, N

    If Len(N) < 1 Or Len(N) > 10 Then
    Else
    Call R("", N)
    For i = 0 To List1.ListCount - 1
    Print #2, List1.List(i)
    Next i
    Print #2, c
    End If

    Close #2
    Close #1
    End
    End Sub

    Sub R(a, b)

    If Len(a) = Len(b) Then
    List1.AddItem a
    c = c + 1
    Else
    For i = 1 To Len(b)
    If InStr(a, Mid(b, i, 1)) = 0 Then Call R(a & Mid(b, i, 1), b)
    Next
    End If

    End Sub

    回覆刪除
  3. 緣尉 好
    程式OK
    arro 好
    程式OK
    比賽時If Len(N) < 1 Or Len(N) > 10 Then
    可以不用判斷題目輸入檔的錯誤OR正確

    回覆刪除