Tous les défis
Difficile 0 résolus 0 % de réussite

Nombre minimum de trajets d’ascenseur

Regroupez les personnes en un nombre minimal de trajets d’ascenseur, chaque trajet étant limité par le poids maximal autorisé.

Chaque personne doit effectuer exactement un trajet. Un groupe peut partager un trajet si la somme de leurs poids ne dépasse pas la capacité maximale. Les regroupements sont libres ; l’ordre d’entrée n’a pas d’importance. Minimisez le nombre de trajets.

Implémentez elevator_rides(weights, capacity).

Entrée

weights : Le poids de chaque personne.

capacity : Le poids total maximal autorisé par trajet.

Sortie

Retournez le nombre minimal de trajets.

Contraintes

1 ≤ personnes ≤ 20. 1 ≤ capacité ≤ 1 000 000 000. Chaque poids est compris entre 1 et capacité.

Exemples

Exemple 1
Entrée :
weights = [3, 4, 5]
capacity = 7

Sortie attendue :
expected = 2
Entrée :
std::vector<long long> weights = {3, 4, 5};
long long capacity = 7;

Sortie attendue :
long long expected = 2;
Entrée :
long[] weights = new long[] {3, 4, 5};
long capacity = 7;

Sortie attendue :
long expected = 2;

Explication

Envoyez 3 + 4 ensemble et 5 séparément. Le poids total 12 ne peut pas tenir en un seul trajet avec une capacité de 7.

Exemple 2
Entrée :
weights = [2, 2, 2]
capacity = 6

Sortie attendue :
expected = 1
Entrée :
std::vector<long long> weights = {2, 2, 2};
long long capacity = 6;

Sortie attendue :
long long expected = 1;
Entrée :
long[] weights = new long[] {2, 2, 2};
long capacity = 6;

Sortie attendue :
long expected = 1;

Explication

Les trois personnes tiennent ensemble car 2 + 2 + 2 = 6.

Références

Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.