24-NSIJ2ME1-2
-
m1 = Marchandise(20, 7)
-
Les combinaisons possibles respectant la contrainte de capacité de 100 litres :
Combinaison Volume total Prix total \(\{ m_1 \}\) 20L 40€ \(\{ m_2 \}\) 70L 210€ \(\{ m_3 \}\) 40L 160€ \(\{ m_4 \}\) 50L 50€ \(\{ m_1,\ m_2 \}\) 90L 250€ \(\{ m_1,\ m_3 \}\) 60L 200€ \(\{ m_1,\ m_4 \}\) 70L 90€ \(\{ m_3,\ m_4 \}\) 90L 210€ La combinaison optimale qui maximise le prix est donc \(\{ m_1,\ m_2 \}\).
-
L'algorithme précédent est un algorithme glouton.
-
La fonction
tri
est un tri par insertion dont le coût temporel est quadratique \(O(n^2)\) dans le pire des cas. -
def chargeOptimale(tab: list, v_restant: int, i: int) -> list: if i >= len(tab): return [] else: if tab[i].volume > v_restant: return chargeOptimale(tab, v_restant, i + 1) else: option1 = chargeOptimale(tab, v_restant, i + 1) option2 = [tab[i]] + chargeOptimale(tab, v_restant - tab[i].volume, i + 1) if prixListe(option1) > prixListe(option2): return option1 else: return option2