Bonjour,
je me suis inspiré de ce topic pour la création de celui-ci.
Marathon d’algorithmes
Le but de ce topic est de s’entraîner à la réalisation d’algorithmes.
Déroulement du topic
- Je commence par énoncer un problème.
- Si un membre parvient à fournir un algorithme qui répond à mon problème sous trois jours, c’est à son tour de poser un problème.
- Sinon, alors je poste une solution à mon problème (en utilisant une balise secret) et je donne la main à un membre de mon choix.
Cas particulier
- Si un membre ayant trouvé un algorithme valide n’a aucun problème à poser en retour, alors il est en mesure de donner la main à n’importe qui d’autre.
Règles générales
- N’importe quel langage pourra être utilisé : n’oubliez ceci-dit pas de préciser le langage que vous utilisez !
- Les problèmes ne doivent pas porter sur un langage spécifique, on doit pouvoir apporter une réponse avec n’importe quel langage (ou du moins une grande majorité)
- Il peut exister plusieurs solutions à un problème avec différents niveaux de complexité. Libres à vous de proposer différentes solutions !
J’ouvre le bal avec un premier algorithme relativement simple :
Soit un tableau arr
formé d’entiers relatifs.
Un sous-tableau de arr
est un tableau formé d’éléments de arr
. Par exemple, si arr = [1, 2, 3]
alors sont des sous-tableaux de arr
:
[1, 2, 3]
[1, 3]
[2, 3]
[2]
- etc…
Un sous-tableau de arr
est dit contiguë si il est formé d’éléments de arr
situés côte à côte. En reprenant notre précédent exemple :
[1, 2, 3]
est contiguë[1, 3]
n’est pas contiguë[2, 3]
est contiguë[2]
est contiguë- etc…
Écrire une fonction get_max_sub_arr(arr)
qui calcule le sous-tableau contiguë de arr
dont la somme des éléments est maximale. Cette fonction retournera la somme en question.
Voici quelques exemples :
- Pour
[1, 2, 3]
la fonction retourne 1 + 2 + 3 = 6 - Pour
[-2, -1, 1, 2]
la fonction retourne 1 + 2 = 3 - Pour
[2, -1, 2, 3, -9]
la fonction retourne 2 - 1 + 2 + 3 = 6 - Pour
[-1, 2, 3, -9, 11]
la fonction retourne 11 - etc…
Dans le cas où tous les éléments du tableau sont négatifs, la fonction renverra 0, par convention.
Bonus : trouver une solution O(n)