Denken Sie daran, dass ein Satz ohne Duplikate ungeordnet ist.
Definition Eine N- eindeutig additive Menge S, deren Länge K ist, ist eine Menge, so dass alle N- Längen-Teilmengen in S zu unterschiedlichen Zahlen summieren. Mit anderen Worten, die Summen aller N- Längen-Teilmengen von S sind alle verschieden.
Ziel Wenn ein Array / Set als Eingabe und eine Zahl N
für eine Funktion oder ein vollständiges Programm in einem vernünftigen Format angegeben ist, können Sie einen Wahrheits- oder False-Wert finden und zurückgeben oder ausgeben (Fehler für False ist in Ordnung), der angibt, ob die Eingabe N - ist oder nicht. einzigartig additiv.
Sie können davon ausgehen, dass jedes Element höchstens einmal angezeigt wird und dass sich jede Zahl im nativen Datentyp Ihrer Sprache befindet. Bei Bedarf können Sie auch davon ausgehen, dass die Eingabe sortiert ist. Zuletzt können Sie das annehmen 0 < N <= K
.
Beispiele
Betrachten wir die Menge S = {1, 2, 3, 5}
und N = 2
. Hier sind alle Summen aller eindeutigen Paare S
(für die eindeutigen sind die einzigen, die für Summen von Interesse sind):
1 + 2 = 3
1 + 3 = 4
1 + 5 = 6
2 + 3 = 5
2 + 5 = 7
3 + 5 = 8
Wir können sehen, dass es keine Duplikate in der Ausgabe gibt, also ist S 2-eindeutig additiv.
Betrachten wir nun die Menge T = {12, 17, 44, 80, 82, 90}
und N = 4
. Hier sind alle möglichen Summen der Länge vier:
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
Sie sind alle einzigartig, und so ist T 4-einzigartig additiv.
Testfälle
[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
?