Câu hỏi đầu tiên ở đây, đừng mắng tôi nếu đây là một thử thách trùng lặp hoặc xấu.
Giới thiệu
Tôi đã nghĩ về thử thách này bản thân mình, và nó dường như là một câu đố cơ bản tốt cho những người mới chơi mã. Nó cũng có thể giúp tôi quyết định nên học ngôn ngữ chơi gôn nào.
Thử thách
Cho một mảng các số nguyên nhỏ hơn hoặc bằng n
, xuất hoặc trả về số lượng số tối thiểu từ mảng tổng hợp chính xác n
.
Bạn có thể chọn để viết một chức năng hoặc một chương trình đầy đủ.
Đầu vào
Bạn có thể giả định một cách an toàn 0 <= n < 2^31
.
Lấy một mảng hoặc danh sách của bất kỳ loại nào ( vector
đối với C ++ hoặc Java LinkedList
được cho phép), cùng với n
và một tham số tùy chọn length
, chỉ định độ dài của mảng.
Bạn cũng có thể lấy đầu vào là một chuỗi được phân tách n
bằng dấu cách, được phân tách bằng dấu phẩy hoặc dấu cách:
1 5 7 3 7 3 6 3 2 6 3,10
1 5 7 3 7 3 6 3 2 6 3 10
nếu nó dễ dàng hơn
Đầu ra
Đầu ra hoặc trả về số lượng số tối thiểu từ mảng tổng hợp chính xác n
. Sử dụng ví dụ trên:
1 5 7 3 7 3 6 3 2 6 3,10
Chương trình của bạn nên in:
2
bởi vì số lượng tối thiểu của các số tổng 10
là 2
( 7
và 3
).
Trong trường hợp không có giải pháp, hãy in hoặc trả về âm bản, 0
"Không có giải pháp" (mặc dù điều đó sẽ không thông minh), ∞
(như được đề xuất) hoặc bất kỳ giá trị giả nào khác, ngoại trừ một chuỗi trống.
Ví dụ đầu vào và đầu ra
Đầu vào:
1 5 7 3 7 3 6 3 2 6 3,10
143 1623 1646 16336 1624 983 122,18102
5 6 9,12
Đầu ra:
2
3
-1
Chấm điểm
Đây là mã golf, vì vậy mã ngắn nhất tính bằng byte thắng.
Câu trả lời hàng đầu sẽ được chấp nhận vào Giáng sinh.
false
cho các trường hợp không có giải pháp?