Module: Gierige Algorithmen


Problem

1 /9


Theory Click to read/hide

Der gierige Algorithmus ist ein Algorithmus, der in jedem Schritt die beste (als Teil des aktuellen Schritts) Option bei der Berechnung wählt, dass die endgültige Entscheidung global optimal sein wird.

Ein kleines Beispiel:
Lassen Sie uns eine unbegrenzte Anzahl von Münzen verschiedener Nominierten haben, und wir müssen S erhöhen. Wir werden zwei konkrete Fälle untersuchen, von denen jeder versuchen wird, den Gieralgorithmus zu lösen.
Lassen Sie uns damit fortfahren: Wir nehmen die Münze, die größte nominale (optimale Option innerhalb des Schrittes) bei jedem Schritt, die den Restbetrag nicht überschreitet.

a) Mögen die Nominierten 1, 5 und 10 und S = 27.
(1) Nehmen Sie 10, S: 27 - Zustand 17
(2) Nehmen Sie 10, S: 17 - Zustand 7
(3) Wir nehmen 5, S: 7 - Zustand 2
(4) Nehmen Sie 1, S: 2 - Zustand 1
(5) Nehmen Sie 1, S: 1 - Zustand 0
Sie haben schließlich fünf Münzen. Sie können sicherstellen, dass allein (z.B. Schott) vier Münzen oder weniger 27 nicht funktionieren.

b) Mögen die Nonnen 1, 5 und 7 und S = 24.
(1) Nehmen 7, S: 24 - Zustand 17
(2) Nehmen Sie 7, S: 17 - Zustand 10
(3) Nehmen Sie 7, S: 10 - Zustand 3
(4) Nehmen Sie 1, S: 3 - Zustand 2
(5) Nehmen Sie 1, S: 2 - Zustand 1
(6) Wir nehmen eins, S: 1 - Zustand 0.
Sie hatten sechs Münzen, aber sie hätten S vier Münzen wählen können - zwei Nominierten 7 und zwei Nominierten 5.

Der gierige Algorithmus ist nicht immer der Fall, wie aus dem Beispiel ersichtlich ist. Aber wenn es im Allgemeinen zu einer optimalen Reaktion führt, wäre es in der Regel einfacher als mit der dynamischen Programmierung oder anderen Methoden.

Problem

Fordjo ist sehr lieb von puncerotty mit verschiedenen Fixes, und es ist nicht so wichtig wie was. Eines Tages trat Fordjo in die Bäckerei ein und sah, dass es eine Puncerotti mit Tomaten, Spinat und Pilzen gab.
Fordjo will so viele puncerotty wie möglich kaufen, aber das Problem ist, dass die Anzahl der puncerotty so begrenzt ist wie die Menge an Geld in Fordjo.

Helfen Sie Fordjo die maximale Menge an pesterotti, die er kaufen kann.

Eingabe:
Die erste Linie enthält die Zahlen P1, P2 und P3 - die Kosten für Pancerotti mit Tomaten, Spinat und Pilzen.
Die zweite Zeile definiert die Werte von N1, N2 und N3 - die Anzahl der relevanten pesterotti verkauft.
Die dritte Zeile verzeichnete die Anzahl der R, die Geldmenge von Fordjo.
Alle Dateneingabenummern sind positiv, höchstens 10000.

Ausgangsdaten:
Nehmen Sie eine ganze Zahl, die maximale Anzahl von pesterotti, die Fordjo kaufen kann.

Beispiel:
EingangsdatenAusgangsdaten
3 8
2 6 4
23.
7