Tôi cần đến ngân hàng và rút một số tiền. Tôi cần rút $ 30, $ 22 để trả cho bạn cùng phòng của mình cho internet và $ 8 cho việc giặt ủi. Vì cả hai đều không thể thay đổi, tôi cần $ 30 của mình để được chia thành hai phân vùng có hai kích cỡ. Điều đó có nghĩa là khi người giao dịch hỏi tôi muốn 30 đô la như thế nào, tôi sẽ phải đưa ra yêu cầu. Tôi có thể nói với họ rằng tôi muốn nó trong hai mươi, một kẻ rùng mình và năm người. Nhưng tôi muốn làm cho yêu cầu của tôi đơn giản nhất có thể để tránh phải lặp lại chính mình. Để làm cho yêu cầu của tôi đơn giản hơn, tôi có thể yêu cầu tiền mặt của tôi chứa hai mươi và ít nhất 2 cái vì 8 được ngụ ý trong tổng số, nhưng tốt hơn tôi có thể yêu cầu một trong những hóa đơn tôi nhận được là một hóa đơn một đô la (Nếu bạn không bị thuyết phục về điều này chỉ cố gắng kiếm 29 đô la mà không kiếm được 8).
Vì vậy, tất cả đều ổn và bảnh bao nhưng tôi cần thực hiện phép tính này mỗi khi đến ngân hàng nên tôi nghĩ tôi sẽ viết một chương trình để làm việc này (bạn có viết chương trình để làm việc này cho tôi không).
Chương trình hoặc chức năng của bạn nên có một danh sách các số nguyên đại diện cho tất cả các khoản thanh toán tôi cần thực hiện và một bộ số nguyên biểu thị các mệnh giá của các hóa đơn có sẵn tại ngân hàng và bạn phải xuất ra danh sách các mệnh giá nhỏ nhất để mọi cách tạo ra tổng số bao gồm danh sách mệnh giá đó có thể được phân chia rõ ràng thành danh sách thanh toán.
Quy tắc bổ sung
Bạn có thể cho rằng danh sách mệnh giá sẽ luôn chứa một
1
hoặc bạn có thể tự thêm nó vào mỗi danh sách.Một số đầu vào sẽ có nhiều giải pháp tối thiểu. Trong những trường hợp này, bạn có thể xuất một trong hai.
Đây là môn đánh gôn, vì vậy câu trả lời sẽ được tính bằng byte với ít byte hơn.
Các trường hợp thử nghiệm
Payments, denominations -> requests
{22,8} {1,2,5,10,20,50} -> {1} or {2}
{2,1,2} {1,5} -> {1}
{20,10} {1,2,5,10,20,50} -> {}
{1,1,1,1} {1,2} -> {1,1,1}
{20,6} {1,4,5} -> {1}
{2,6} {1,2,7} -> {2}
{22, 11} {1, 3, 30, 50} -> {1, 3}
{44, 22} {1, 3, 30, 50} -> {1, 3, 3, 30}
{2,6} {1,2,7} -> {2}
.
(If you are not convinced of this just try to make 29 dollars without making 9)
Ý bạn là không làm 8? Hoặc đã làm tôi hiểu sai