Introduction:
Inspiré de ces deux questions SO (sans doute de la même classe): imprimer les éléments dans le sous-tableau de la somme maximale sans éléments adjacents java et de la somme maximale des éléments non adjacents d'un tableau, à imprimer .
Défi:
Étant donné une liste d'entiers, sortez une sous-séquence composée d'éléments non adjacents qui ont la somme la plus élevée. Voici quelques exemples:
[1,2,3,-1,-3,2,5]
entraînerait[1,3,5]
(avec une somme de9
) aux indices de base 0[0,2,6]
.[4,5,4,3]
entraînerait soit[4,4]
(avec une somme de8
) aux indices de base 0[0,2]
ou[5,3]
(également avec une somme de8
) aux indices de base 0[1,3]
.[5,5,10,100,10,5]
se traduirait par[5,100,5]
(avec une somme de110
) aux indices basés sur 0[0,3,5]
ou[1,3,5]
.
Ce qui est le plus important dans ces exemples ci-dessus, les indices contenant les éléments sont au moins 2 séparés les uns des autres. Si nous regardons l'exemple [5,5,10,100,10,5]
plus en profondeur: nous avons la sous-séquence potentielle suivante contenant des éléments non adjacents; avec leurs indices en dessous; avec leurs sommes en dessous:
[[5],[10],[100],[10],[5],[5],[100,5],[10,5],[10,10],[5,5],[5,10],[5,100],[5,5],[5,10],[5,100],[5,10],[5,100,5],[5,100,5],[5,10,5],[5,10,10]] // non-adjacent subsequences
[[5],[ 4],[ 3],[ 2],[1],[0],[ 3,5],[ 2,5],[ 2, 4],[1,5],[1, 4],[1, 3],[0,5],[0, 4],[0, 3],[0, 2],[1, 3,5],[0, 3,5],[0, 2,5],[0, 2, 4]] // at these 0-based indices
[ 5, 10, 100, 10, 5, 5, 105, 15, 20, 10, 15, 105, 10, 15, 105, 15, 110, 110, 20, 25] // with these sums
^ ^ // and these two maximums
Puisque les sommes maximales sont 110
, nous sortons [5,100,5]
comme résultat.
Règles du défi:
- Vous êtes autorisé à générer des paires clé-valeur de la valeur index +. Ainsi, au lieu de
[5,100,5]
vous, vous pouvez générer[[0,5],[3,100],[5,5]]
ou[[1,5],[3,100],[5,5]]
comme résultat (ou[[1,5],[4,100],[6,5]]
/[[2,5],[4,100],[6,5]]
lorsque l'indexation basée sur 1 est utilisée au lieu de basée sur 0).- Si vous utilisez des paires clé-valeur, elles peuvent également être dans un ordre inverse ou aléatoire, car il est clair quelles valeurs sont signifiées en raison de l'index apparié.
- La sortie uniquement des index sans valeurs n'est pas autorisée. Il doit soit afficher les valeurs, soit les valeurs / indices sous forme de paires clé-valeur (ou deux listes séparées pour les `` clés '' et les `` valeurs '' de la même taille si les paires clé-valeur ne sont pas possibles dans la langue de votre choix).
- Vous êtes autorisé à sortir toutes les sous-séquences possibles avec la somme maximale au lieu d'une seule.
- Comme vous pouvez le voir dans les exemples, la liste d'entrée peut également contenir des valeurs négatives et dupliquées. Vous pouvez supposer que les entiers d'entrée sont dans la plage .
- La liste de sortie ne peut pas être vide et doit toujours contenir au moins un élément (si une liste ne contiendrait que des valeurs négatives, une liste contenant la valeur négative la plus basse unique serait alors sortie en résultat - voir les deux derniers cas de test).
- S'il existe une sortie possible mais pour plusieurs indices différents, il est autorisé de les sortir tous les deux, même s'ils peuvent sembler en double. (c.-à-d. l'exemple ci-dessus, peut sortir
[[5,100,5],[5,100,5]]
pour les deux combinaisons d'index possibles).
Cas de test:
Input: Possible outputs: At 0-based indices: With sum:
[1,2,3,-1,-3,2,5] [1,3,5] [0,2,6] 9
[4,5,4,3] [4,4]/[5,3] [0,2]/[1,3] 8
[5,5,10,100,10,5] [5,100,5] [0,3,5]/[1,3,5] 110
[10] [10] [0] 10
[1,1,1] [1,1] [0,2] 2
[-3,7,4,-2,4] [7,4] [1,4] 11
[1,7,4,-2] [7] [1] 7
[1,2,-3,-4,5,6,-7] [2,6] [1,5] 8
[800,-31,0,0,421,726] [800,726]/[800,0,726] [0,5]/[0,3,5]/[0,2,5] 1526
[-1,7,8,-5,40,40] [8,40] [2,4]/[2,5] 48
[-5,-18,-3,-1,-10] [-1] [3] -1
[0,-3,-41,0,-99,-2,0] [0]/[0,0]/[0,0,0] [0]/[3]/[6]/[0,3]/
[0,6],[3,6]/[0,3,6] 0
powerset
est un ensemble de sous-ensembles n'est-ce pas? mais il semble que vous retourniez un ensemble de sous-séquences? [4,5,4,3] entraînerait soit [4,4] où [4,4] n'est clairement pas un ensemble.
[5,100,5]
deux fois pour votre troisième exemple.