N'oubliez pas qu'un ensemble n'est pas ordonné sans doublons.
Définition Un ensemble N à additif unique S dont la longueur est K est un ensemble tel que tous les sous-ensembles de longueur N dans S totalisent des nombres différents. En d'autres termes, les sommes de tous les sous-ensembles de longueur N de S sont toutes distinctes.
Objectif Étant donné un tableau / ensemble en entrée et un numéro N
pour une fonction ou un programme complet dans n'importe quel format raisonnable, rechercher et renvoyer ou sortir une valeur véridique ou falsey (l'erreur pour falsey est correcte) indiquant si l'entrée est N ou non - additif unique.
Vous pouvez supposer que chaque élément n'apparaît qu'une seule fois et que chaque numéro se trouve dans le type de données natif de votre langue. Si nécessaire, vous pouvez également supposer que l'entrée est triée. Enfin, vous pouvez supposer cela 0 < N <= K
.
Exemples
Considérons l'ensemble S = {1, 2, 3, 5}
et N = 2
. Voici toutes les sommes de toutes les paires uniques S
(car les seules sont les seules intéressantes pour les sommes):
1 + 2 = 3
1 + 3 = 4
1 + 5 = 6
2 + 3 = 5
2 + 5 = 7
3 + 5 = 8
Nous pouvons voir qu'il n'y a pas de doublons en sortie, donc S est 2-uniquement additif.
Considérons maintenant l'ensemble T = {12, 17, 44, 80, 82, 90}
et N = 4
. Voici toutes les sommes possibles de longueur quatre:
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
Ils sont tous uniques, et T est donc un additif 4-unique.
Cas de test
[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
?