2011年11月8日 星期二

99正式 Problem 4-2:


有一天菜攤上有 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

輸出檔案:【檔名:out.txt】

蛋菇 90
蛋豆 85
魚 80
果 75
菜蛋 75
肉 65
菇 60
豆 55
菜 45
蛋 30


菜豆 100
蝦 95
肉蛋 95
蛋菇 90
蛋豆 85
魚 80
菜蛋 75
果 75
肉 65
菇 60
豆 55
菜 45
蛋 30


2 則留言:

  1. Dim price(2, 8)
    Private Sub Form_Load()
    Me.Hide
    Open App.Path & "\in1.txt" For Input As #1
    Open App.Path & "\in2.txt" For Input As #2
    Open App.Path & "\out.txt" For Output As #3

    '-----------in1
    Input #1, P
    For i = 1 To 8
    Input #1, price(1, i), price(2, i)
    Next i
    Call ABC(P, "", 0, 0)
    Call sort
    For i = 0 To List1.ListCount - 1
    Print #3, List1.List(i) & " " & List2.List(i)
    Next i
    '-----------in2
    Print #3,
    List1.Clear: List2.Clear
    Input #2, P
    For i = 1 To 8
    Input #2, price(1, i), price(2, i)
    Next i
    Call ABC(P, "", 0, 0)
    Call sort
    For i = 0 To List1.ListCount - 1
    Print #3, List1.List(i) & " " & List2.List(i)
    Next i


    Close #3
    Close #2
    Close #1
    End
    End Sub

    Sub ABC(A, B, C, D)
    If A >= C And C <> 0 Then List1.AddItem B: List2.AddItem C

    For i = 1 To 8
    If InStr(B, price(1, i)) = 0 And i > D Then Call ABC(A, B & price(1, i), C + price(2, i), i)
    Next i

    End Sub

    Sub sort()

    For i = 0 To List2.ListCount - 2
    For j = i + 1 To List2.ListCount - 1
    A = Val(List2.List(i))
    B = Val(List2.List(j))
    If A < B Then
    T = List1.List(i)
    List1.List(i) = List1.List(j)
    List1.List(j) = T
    T = List2.List(i)
    List2.List(i) = List2.List(j)
    List2.List(j) = T
    End If
    Next j
    Next i
    End Sub

    回覆刪除
  2. out.txt


    蛋菇 90
    蛋豆 85
    魚 80
    果 75
    菜蛋 75
    肉 65
    菇 60
    豆 55
    菜 45
    蛋 30

    菜豆 100
    肉蛋 95
    蝦 95
    蛋菇 90
    蛋豆 85
    魚 80
    菜蛋 75
    果 75
    肉 65
    菇 60
    豆 55
    菜 45
    蛋 30

    回覆刪除