Hãy nhớ rằng một bộ là không có thứ tự mà không trùng lặp.
Định nghĩa Một tập hợp phụ gia N -uniquely S có độ dài là K là một tập hợp sao cho tất cả các tập con N -length trong S tổng thành các số khác nhau. Nói cách khác, tổng của tất cả các tập con N -length của S đều khác biệt.
Mục tiêu Đưa ra một mảng / được đặt làm đầu vào và một số N
cho một hàm hoặc cho một chương trình đầy đủ ở bất kỳ định dạng hợp lý nào, tìm và trả về hoặc xuất ra một giá trị trung thực hoặc falsey (lỗi cho falsey là ổn) biểu thị liệu đầu vào có phải là N - phụ gia độc đáo.
Bạn có thể giả sử rằng mỗi phần tử chỉ xuất hiện tối đa một lần và mỗi số nằm trong kiểu dữ liệu gốc của ngôn ngữ của bạn. Nếu cần, bạn cũng có thể cho rằng đầu vào được sắp xếp. Cuối cùng, bạn có thể cho rằng 0 < N <= K
.
Ví dụ
Hãy xem xét các thiết lập S = {1, 2, 3, 5}
và N = 2
. Dưới đây là tất cả các khoản tiền của tất cả các cặp duy nhất trên S
(đối với những người duy nhất là những người quan tâm duy nhất cho các khoản tiền):
1 + 2 = 3
1 + 3 = 4
1 + 5 = 6
2 + 3 = 5
2 + 5 = 7
3 + 5 = 8
Chúng ta có thể thấy rằng không có sự trùng lặp trong đầu ra, vì vậy S là phụ gia 2 lần duy nhất.
Bây giờ chúng ta hãy xem xét các thiết lập T = {12, 17, 44, 80, 82, 90}
và N = 4
. Dưới đây là tất cả các khoản tiền có thể có độ dài bốn:
12 + 17 + 44 + 80 = 153
12 + 17 + 44 + 82 = 155
12 + 17 + 44 + 90 = 163
12 + 17 + 80 + 82 = 191
12 + 17 + 80 + 90 = 199
12 + 17 + 82 + 90 = 201
12 + 44 + 80 + 82 = 218
12 + 44 + 80 + 90 = 226
12 + 44 + 82 + 90 = 228
12 + 80 + 82 + 90 = 264
17 + 44 + 80 + 82 = 223
17 + 44 + 80 + 90 = 231
17 + 44 + 82 + 90 = 233
17 + 80 + 82 + 90 = 269
44 + 80 + 82 + 90 = 296
Chúng đều là duy nhất, và vì vậy T là phụ gia 4 duy nhất.
Các trường hợp thử nghiệm
[members], N => output
[1, 4, 8], 1 => true
[1, 10, 42], 1 => true ; all sets trivially satisfy N = 1
[1, 2, 3, 4], 3 => true
[1, 2, 3, 4, 5], 5 => true
[1, 2, 3, 5, 8], 3 => true
[1, 2, 3, 4, 5], 2 => false ; 1 + 4 = 5 = 2 + 3
[-2, -1, 0, 1, 2], 3 => false ; -2 + -1 + 2 = -1 = -2 + 0 + 1
[1, 2, 3, 5, 8, 13], 3 => false ; 1 + 2 + 13 = 16 = 3 + 5 + 8
[1, 2, 4, 8, 16, 32], 3 => true
[1, 2, 4, 8, 16, 32], 4 => true
[1, 2, 4, 8, 16, 32], 5 => true
[1, 2, 4, 8, 16, 32], 6 => true
[3, 4, 7, 9, 12, 16, 18], 6 => true
[3, 4, 7, 9, 12, 16, 18], 3 => false ; 3 + 4 + 12 = 19 = 3 + 7 + 9
falsey
?
N <= K
sao?