mirror of
https://github.com/Fare-spec/cours.git
synced 2025-12-07 10:50:36 +00:00
pas compris
This commit is contained in:
@@ -50,7 +50,7 @@ def entier_vers_binaire(n: int, taille: int) -> list:
|
|||||||
return bits
|
return bits
|
||||||
|
|
||||||
|
|
||||||
def ensemble_des_parties(ensemble: list) -> iterator:
|
def ensemble_des_parties(ensemble: list):
|
||||||
"""
|
"""
|
||||||
Construit l'itérable enumérant toutes les parties d'un ensemble.
|
Construit l'itérable enumérant toutes les parties d'un ensemble.
|
||||||
PARAM. :
|
PARAM. :
|
||||||
@@ -100,7 +100,7 @@ def sac_a_dos_glouton(videos, capacite, cle):
|
|||||||
return sélection, totale_duree, totale_taille
|
return sélection, totale_duree, totale_taille
|
||||||
|
|
||||||
|
|
||||||
def sac_a_dos_dynamique(videos, capacite):
|
'''def sac_a_dos_dynamique(videos, capacite):
|
||||||
precision = 100
|
precision = 100
|
||||||
capacite = int(capacite * precision)
|
capacite = int(capacite * precision)
|
||||||
liste = list(videos.items())
|
liste = list(videos.items())
|
||||||
@@ -122,7 +122,22 @@ def sac_a_dos_dynamique(videos, capacite):
|
|||||||
nom, info = liste[i - 1]
|
nom, info = liste[i - 1]
|
||||||
selection.append(nom)
|
selection.append(nom)
|
||||||
cap -= int(info["taille"] * precision)
|
cap -= int(info["taille"] * precision)
|
||||||
return selection[::-1]
|
return selection[::-1]'''
|
||||||
|
|
||||||
|
|
||||||
|
def sac_a_dos_dynamique(videos, capacite):
|
||||||
|
dp = [(0, []) for _ in range(capacite + 1)]
|
||||||
|
for nom, info in videos.items():
|
||||||
|
duree = info['Durée']
|
||||||
|
taille = info['taille']
|
||||||
|
for c in range(capacite, taille - 1, -1):
|
||||||
|
prev_duree, prev_sel = dp[c - taille]
|
||||||
|
if prev_duree + duree > dp[c][0]:
|
||||||
|
dp[c] = (prev_duree + duree, prev_sel + [nom])
|
||||||
|
return dp[capacite][1]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
@@ -148,15 +163,15 @@ if __name__ == "__main__":
|
|||||||
)
|
)
|
||||||
print("--- Glouton par durée décroissante ---")
|
print("--- Glouton par durée décroissante ---")
|
||||||
print(
|
print(
|
||||||
f"Vidéos : {sel_duree}\nDurée : {dur_duree} min\nTaille : {taille_duree:.3f} Go\n"
|
f"Vidéos : {selection_duree}\nDurée : {dur_duree} min\nTaille : {taille_duree:.3f} Go\n"
|
||||||
)
|
)
|
||||||
print("--- Glouton par taille croissante ---")
|
print("--- Glouton par taille croissante ---")
|
||||||
print(
|
print(
|
||||||
f"Vidéos : {sel_taille}\nDurée : {dur_taille} min\nTaille : {taille_taille:.3f} Go\n"
|
f"Vidéos : {selection_taille}\nDurée : {dur_taille} min\nTaille : {taille_taille:.3f} Go\n"
|
||||||
)
|
)
|
||||||
print("--- Glouton par ratio durée/taille ---")
|
print("--- Glouton par ratio durée/taille ---")
|
||||||
print(
|
print(
|
||||||
f"Vidéos : {sel_ratio}\nDurée : {dur_ratio} min\nTaille : {taille_ratio:.3f} Go\n"
|
f"Vidéos : {selection_ratio}\nDurée : {dur_ratio} min\nTaille : {taille_ratio:.3f} Go\n"
|
||||||
)
|
)
|
||||||
videos_mb = [
|
videos_mb = [
|
||||||
(nom, (info["Durée"], int(round(info["Taille"] * 1000))))
|
(nom, (info["Durée"], int(round(info["Taille"] * 1000))))
|
||||||
|
|||||||
20
question_du_jour/12-05-2025/main.py
Normal file
20
question_du_jour/12-05-2025/main.py
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
def force_brute(liste, i, j):
|
||||||
|
summs = []
|
||||||
|
for start in range(i, j):
|
||||||
|
for end in range(start + 1, j + 1):
|
||||||
|
summs.append(sum(liste[start:end]))
|
||||||
|
return max(summs)
|
||||||
|
|
||||||
|
|
||||||
|
def somme_max(liste):
|
||||||
|
max_actuel = max_total = liste[0]
|
||||||
|
for x in liste[1:]:
|
||||||
|
max_actuel = max(x, max_actuel + x)
|
||||||
|
max_total = max(max_total, max_actuel)
|
||||||
|
return max_total
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
liste = [4, -1, -2, 5, -2]
|
||||||
|
m = force_brute(liste, 0, 5)
|
||||||
|
print(m)
|
||||||
Reference in New Issue
Block a user