Analyse récursive d'un arbre binaire avec mémoïsation
Swift
Hard
functions
Tâche «Analyse récursive d'un arbre binaire avec mémoïsation»
Écrivez une fonction qui prend un arbre binaire, représenté sous forme d'un tableau d'entiers (parcours en largeur, null est noté 0), et renvoie la somme maximale des valeurs des nœuds de la racine à une feuille, à condition que l'on puisse sauter au plus deux nœuds consécutifs sur le chemin. Utilisez une fonction récursive avec mémoïsation pour un calcul efficace. L'arbre contient jusqu'à 1000 nœuds, les valeurs vont de -100 à 100.
Format d\ entrée
Première ligne : un entier n (1 ≤ n ≤ 1000) — le nombre d'éléments dans le tableau. Deuxième ligne : n entiers séparés par des espaces — la représentation en largeur de l'arbre (0 indique l'absence d'un nœud).
Format de sortie
Un entier unique — la somme maximale de la racine à une feuille en tenant compte de la possibilité de sauter au plus deux nœuds consécutifs.
Exemples
Exemple 1
ENTRÉE
3
ab
bc
ca
SORTIE
6
Exemple 2
ENTRÉE
1
10
SORTIE
10
Exemple 3
ENTRÉE
5
10 5 15 0 0
SORTIE
25
Exemple 4
ENTRÉE
2
abc
def
SORTIE
0
main.swift