2012年11月23日 星期五

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. Dim number(), num As Integer
    Private Sub Form_Load()
    Me.Hide
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Do
    Input #1, num
    If num = 0 Then Exit Do
    ReDim number(num)
    For i = 1 To num
    Input #1, number(i)
    Next
    Call rr("", 1)
    Loop
    Close #2
    Close #1
    End
    End Sub


    Public Function rr(k As String, ByVal x As Integer)
    If Len(k) = 12 Then
    Print #2, k
    Else
    For i = x To num
    If InStr(k, number(i)) = 0 Then Call rr(k & number(i) & " ", i + 1)
    Next
    End If
    End Function

    回覆刪除
  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

    回覆刪除