Adloun

algorithmique (école d'ingénieur) · Chapitre 3 · Application directe du cours

Découper une barre

Sacs avec répétitions, multi-ensembles et couples de sacs · niveau 2

Énoncé

Une scierie vend des barres de longueur au prix :

12345678
158910171720

Elle dispose d'une barre de longueur qu'elle peut découper en morceaux de longueurs entières (sans perte).

  • Montrer qu'il s'agit d'un sac avec répétitions : quels sont les objets, leurs tailles, leurs valeurs ? Pourquoi peut-on ici supprimer l'indice ?
  • On note le prix maximum d'une barre de longueur . Donner l'équation de récurrence, écrire le programme et donner une découpe optimale de la barre de longueur .

Corrigé

  • Les objets sont les longueurs de morceaux (taille , valeur ), disponibles en nombre illimité ; la contenance est . Comme la barre est entièrement vendue et qu'un morceau de longueur existe toujours, on peut raisonner directement sur le dernier morceau sans numéroter les objets : c'est le même raisonnement que pour le rendu de monnaie.
  • Base : . Hérédité : ,


static int[] decoupe(int[] prix, int L) {
    int[] R = new int[L + 1];                       // base : R[0] = 0
    for (int l = 1; l < L + 1; l++)                 // l croissants
        for (int i = 1; i <= Math.min(l, prix.length); i++)
            R[l] = Math.max(R[l], prix[i-1] + R[l - i]);  // dernier morceau : i
    return R;
}

== decoupe : r = [0, 1, 5, 8, 10, 13, 17, 18, 22]
decoupe optimale de 8 : 6 2

La barre de longueur se vend au mieux : un morceau de () et un morceau de (), mieux que la barre entière ().


nom : r
valeurs : 0 1 5 8 10 13 17 18 22
colorier : 8
vert : 0 6
fleches : 0->6:+17 6->8:+5
legende : r(8) = 5 + r(6) = 5 + 17 = 22 : morceaux de 6 et de 2

Complexité .

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →