2012年7月16日 星期一

Lotto

內容 : 正體->简体 
為了呼應台灣電腦彩券的發行,我們再次推出跟組合有關的題目。你在買彩券的時候一定會挑你喜歡的數字吧!(雖然理論上不會增加你的中獎機率,但是你還是會 選擇你的Lucky Number)我們的問題是:假設共有49個號碼,而你必須在你的 k (k>6)個Lucky Number中挑6個號碼作為一張彩券的數字組合。例如:你的Lucky Number的集合是{1,2,3,5,8,13,21,34}以就是說 k=8 ,那麼你就有C(8,6)=28種可能的彩券組合:
[1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2,3,5,13,21], ..., [3,5,8,13,21,34].

你的任務是讀入k以及Lucky Number的集合,然後輸出所有可能的組合。

輸入說明 :
每筆測試資料一行,每行的第1個整數代表 k( 6 < k < 1 3 ) 。 接下來的k個整數代表Lucky Number的集合,此集合已經按數字由小到大排好。k=0代表輸入結束。

輸出說明 :
對每一筆測試資料,輸出其所有可能的組合,每個組合一行。請注意輸出組合的順序需由小到大排列。測試資料之間請空一行。請參考Sample Output。

範例輸入 :

7 1 2 3 4 5 6 7 
8 1 2 3 5 8 13 21 34 
0
範例輸出 :

1 2 3 4 5 6 
1 2 3 4 5 7 
1 2 3 4 6 7 
1 2 3 5 6 7 
1 2 4 5 6 7 
1 3 4 5 6 7 
2 3 4 5 6 7 

1 2 3 5 8 13 
1 2 3 5 8 21 
1 2 3 5 8 34 
1 2 3 5 13 21 
1 2 3 5 13 34 
1 2 3 5 21 34 
1 2 3 8 13 21 
1 2 3 8 13 34 
1 2 3 8 21 34 
1 2 3 13 21 34 
1 2 5 8 13 21 
1 2 5 8 13 34 
1 2 5 8 21 34 
1 2 5 13 21 34 
1 2 8 13 21 34 
1 3 5 8 13 21 
1 3 5 8 13 34 
1 3 5 8 21 34 
1 3 5 13 21 34 
1 3 8 13 21 34 
1 5 8 13 21 34 
2 3 5 8 13 21 
2 3 5 8 13 34 
2 3 5 8 21 34 
2 3 5 13 21 34 
2 3 8 13 21 34 
2 5 8 13 21 34 
3 5 8 13 21 34

2 則留言:

  1. Private Sub Form_Load()
    Me.Hide
    Dim ans As Long
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Do
    List1.Clear
    Input #1, n
    If n = 0 Then Exit Do
    For i = 1 To n
    Input #1, x
    List1.AddItem x
    Next
    Call abc("", 0, 0)
    Print #2,
    Loop Until n = 0
    Close
    Close
    End
    End Sub
    Sub abc(ByVal a, ByVal b, ByVal c)
    If c = 6 Then
    If Right(a, 1) <> " " Then
    Print #2, a
    End If
    Else
    For i = b To List1.ListCount
    If c < 6 Then Call abc(a & " " & List1.List(i), i + 1, c + 1)
    Next
    End If
    End Sub

    回覆刪除
  2. Dim strA, b As String
    Dim c, d As Integer
    Private Sub Form_Load()
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Do While Not EOF(1)
    Input #1, n
    List1.Clear
    If n = 0 Then End
    For i = 1 To Val(n)
    Input #1, x
    List1.AddItem x
    Next i
    Call a("", 0, 1)

    Loop
    Close #2
    Close #1
    End Sub

    Sub a(b, c, d)
    If b = "" Or b = " " Then Call a(b & List1.List(c) & " ", c, 1)
    If d = 6 Then
    Print #2, b
    Else
    If b = "" Then d = 0
    For i = c + 1 To List1.ListCount - 1
    If d < 6 Then Call a(b & List1.List(i) & " ", i, d + 1)
    Next i
    End If
    End Sub

    回覆刪除