Adloun

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

Le cours du chapitre · Tous les exercices du chapitre