Module: Algorithmes gourmands


Problem

1 /9


Formaggio rachète Panzerotti

Theory Click to read/hide

Un algorithme glouton est un algorithme qui, à chaque étape, choisit la variante optimale (au sein de l'étape en cours) dans l'espoir que la solution finale sera optimale au sens global.

Petit exemple :
Supposons que nous ayons un nombre illimité de pièces de différentes dénominations et que nous devions collecter le montant S. Considérons deux cas spécifiques, que nous essaierons de résoudre chacun avec un algorithme glouton.
À savoir, nous agirons comme suit : à chaque étape, nous prendrons une pièce de la valeur nominale la plus élevée (la meilleure option dans l'étape), qui ne dépasse pas le montant restant.

a) Supposons que les pièces soient 1, 5 et 10, et S = 27.
1) Prenez 10, S : 27 -> ; 17
2) Prenez 10, S : 17 -> ; 7
3) Prenez 5, S : 7 -> ; 2
4) Prenez 1, S : 2 -> ; 1
5) Prenez 1, S : 1 -> ; 0
En conséquence, ils ont marqué le montant de cinq pièces. Vous pouvez indépendamment (par exemple, la force brute) vous assurer que pour 4 pièces ou moins, vous ne pourrez pas marquer 27.

b) Soit les valeurs nominales des pièces de monnaie 1, 5 et 7, et S = 24.
1) Prenez 7, S : 24 -> ; 17
2) Prenez 7, S : 17 -> ; 10
3) Prenez 7, S : 10 -> ; 3
4) Prenez 1, S : 3 -> ; 2
5) Prenez 1, S : 2 -> ; 1
6) Prenez 1, S : 1 -> ; 0.
Nous avons marqué avec six pièces, mais nous avons pu marquer S avec quatre pièces - deux d'une valeur nominale de 7 et deux d'une valeur nominale de 5.

Comme on peut le voir sur l'exemple, il n'est pas toujours possible de résoudre des problèmes avec un algorithme glouton. Mais si cela conduit à une réponse globale optimale, ce sera généralement plus facile que d'utiliser la programmation dynamique ou d'autres méthodes.

Problem

Formaggio aime beaucoup les panzerotti avec diverses garnitures, et peu importe avec lequel. Une fois, ayant faim, Formaggio est entré dans une boulangerie et a vu qu'il y avait en vente des panzerotti aux tomates, épinards et champignons.
Formaggio veut acheter autant de panzerotti que possible, mais le problème est que le nombre de panzerotti en vente est limité, tout comme l'argent de Formaggio.

Aidez Formaggio à déterminer le nombre maximum de panzerotti qu'il peut acheter.

Saisie :
La première ligne contient les nombres P1, P2 et P3 – le coût des panzerotti aux tomates, aux épinards et aux champignons respectivement.
La deuxième ligne définit les valeurs N1, N2 et N3 – nombre de panzerotti assortis en vente. 
La troisième ligne contient le nombre R – la somme d'argent dont dispose Formaggio. 
Tous les nombres dans l'entrée sont des nombres entiers positifs ne dépassant pas 10 000.

Sortie :
Imprimer un seul entier - le nombre maximum de panzerotti que Formaggio peut acheter.

Exemple :
 
Entrée Sortie
5 3 8
2 6 4
23
7