OCaml (option informatique) · Chapitre 12 · Exercice de TD
Sélection d'activités
Algorithmes gloutons · niveau 2
Énoncé
Écrire selection qui renvoie la liste des activités retenues.
Corrigé
let selection activites =
match tri_fin activites with
| [] -> []
| premiere :: reste ->
let rec choisir fin_courante l =
match l with
| [] -> []
| a :: r ->
if a.debut >= fin_courante then a :: choisir a.fin r
else choisir fin_courante r
in
premiere :: choisir premiere.fin reste
On retient la première (celle qui finit le plus tôt), puis on parcourt les suivantes : chaque activité dont le debut est à la fin_courante est retenue (et devient la nouvelle référence) ; les autres sont écartées.
Exercices semblables
- Trier par heure de fin corrigé
- Nombre maximal d'activités corrigé
- Rendu optimal exhaustif corrigé
- Quand le glouton se trompe corrigé
- Sac à dos fractionnaire corrigé