有一天菜攤上有 8種類型商品,包括「肉」、「菜」、「蛋」、「果」、「魚」、「蝦」、「豆」及「菇」,每種產品單項價格由輸入檔輸入。某個前來購買的客人,共有 k元預算,表示客人的總購買金額不可超過 k元。若客人對於每種類型商品只可選擇買一項或不買,在預算之內,客人共有那些購買組合?
輸入說明:第 1行是客人之預算金額 k,其值為整數,並且不超過 5000元。第 2~9行有各商品的品名及單價,中間以逗號隔開。商品單價均為整數,且不超過 200元。
輸出說明:每行輸出一種符合預算的購買組合及其支出總金額,但不輸出「都不買」的組合。輸出資料(購買的商品組合及其支出總金額)間,以至少 1個空白隔開。若購買組合包括多種商品,則商品間不限制是否有空白相隔。選手請依支出總金額由大到小依序輸出,但支出金額相同之資料,其輸出順序不限。
輸入檔案 1:【檔名:in1.txt】90
肉, 65
菜, 45
蛋, 30
果, 75
魚, 80
蝦, 95
豆, 55
菇, 60
輸入檔案 2:【檔名:in2.txt】
100
肉, 65
菜, 45
蛋, 30
果, 75
魚, 80
蝦, 95
豆, 55
菇, 60
蛋菇 90
蛋豆 85
魚 80
果 75
菜蛋 75
肉 65
菇 60
豆 55
菜 45
蛋 30
菜豆 100
蝦 95
肉蛋 95
蛋菇 90
蛋豆 85
魚 80
菜蛋 75
果 75
肉 65
菇 60
豆 55
菜 45
蛋 30
Dim b(8, 2)
回覆刪除Dim n As Integer
Private Sub Form_Load()
Me.Hide
Open App.Path & "\in1.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Open App.Path & "\in2.txt" For Input As #3
Input #1, n
d = 0
Do While Not EOF(1)
Line Input #1, x
d = d + 1
x = Replace(x, ",", "")
a = Split(x, " ")
b(d, 0) = a(0)
b(d, 1) = a(1)
Loop
Call abc
Print #2,
List1.Clear
Input #3, n
d = 0
Do While Not EOF(3)
Line Input #3, x
d = d + 1
x = Replace(x, ",", "")
a = Split(x, " ")
b(d, 0) = a(0)
b(d, 1) = a(1)
Loop
Call abc
Close
Close
Close
End
End Sub
Sub abc()
For i = 1 To 8
For j = 0 To 8
If j <> i Then
If Val(b(i, 1)) + Val(b(j, 1)) <= n Then
c = True
For k = 0 To List1.ListCount
If (Val(b(i, 1)) + Val(b(j, 1)) + 5000) & " " & b(j, 0) & b(i, 0) = List1.List(k) Then c = False: Exit For
Next
If c = True Then List1.AddItem (Val(b(i, 1)) + Val(b(j, 1)) + 5000) & " " & b(i, 0) & b(j, 0)
End If
End If
Next
Next
For i = List1.ListCount - 1 To 0 Step -1
h = Split(List1.List(i), " ")
Print #2, h(1) & (Val(h(0)) - 5000)
Next
End Sub