內容 : 正體->简体
為了呼應台灣電腦彩券的發行,我們再次推出跟組合有關的題目。你在買彩券的時候一定會挑你喜歡的數字吧!(雖然理論上不會增加你的中獎機率,但是你還是會 選擇你的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
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
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