Heim >Backend-Entwicklung >PHP-Tutorial >. Mindestpreis für Tickets
983. Mindestpreis für Tickets
Schwierigkeit:Mittel
Themen:Array, dynamische Programmierung
Sie haben ein Jahr im Voraus einige Zugreisen geplant. Die Tage des Jahres, in denen Sie reisen, werden als ganzzahlige Array-Tage angegeben. Jeder Tag ist eine Ganzzahl von 1 bis 365.
Bahntickets werden auf drei verschiedene Arten verkauft:
Die Pässe ermöglichen so viele aufeinanderfolgende Reisetage.
Geben Sie den Mindestbetrag an Dollar zurück, den Sie täglich für die Reise in der angegebenen Tagesliste benötigen.
Beispiel 1:
Beispiel 2:
Einschränkungen:
Lösung:
Das Problem besteht darin, die Mindestkosten für Reisen an bestimmten Tagen im Jahr zu ermitteln. Das Problem bietet drei Arten von Reisepässen: 1-Tages-, 7-Tages- und 30-Tages-Pässe, jeweils mit spezifischen Kosten. Ziel ist es, mit diesen Pässen die günstigste Möglichkeit zu finden, alle Reisetage abzudecken. Die Aufgabe erfordert die Verwendung dynamischer Programmierung, um die minimalen Kosten effizient zu berechnen.
Lassen Sie uns diese Lösung in PHP implementieren: 983. Mindestpreis für Tickets
<?php /** * @param Integer[] $days * @param Integer[] $costs * @return Integer */ function mincostTickets($days, $costs) { ... ... ... /** * go to ./solution.php */ } // Example usage: $days1 = [1, 4, 6, 7, 8, 20]; $costs1 = [2, 7, 15]; echo mincostTickets($days1, $costs1); // Output: 11 $days2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 30, 31]; $costs2 = [2, 7, 15]; echo mincostTickets($days2, $costs2); // Output: 17 ?> <h3> Erläuterung: </h3> <ul> <li>Der Algorithmus iteriert über jeden Tag des Jahres (365 Tage).</li> <li>Für jeden Reisetag werden die Kosten berechnet, indem geprüft wird, ob es günstiger ist: <ul> <li>Kaufen Sie eine 1-Tages-Karte (der Preis der 1-Tages-Karte wird zum Preis des Vortages addiert).</li> <li>Kaufen Sie eine 7-Tages-Karte (zusätzlich zu den Kosten der 7-Tages-Karte und unter Berücksichtigung der Reisekosten der letzten 7 Tage).</li> <li>Kaufen Sie eine 30-Tage-Karte (zusätzlich zu den Kosten der 30-Tage-Karte und unter Berücksichtigung der Reisekosten der letzten 30 Tage).</li> </ul> </li> <li>Wenn es kein Reisetag ist, bleiben die Kosten die gleichen wie am Vortag.</li> </ul> <h3> Beispiel-Komplettlösung </h3> <h4> Beispiel 1: </h4> <p><strong>Eingabe:</strong><br> </p> <pre class="brush:php;toolbar:false">$days = [1, 4, 6, 7, 8, 20]; $costs = [2, 7, 15];
Gesamtkosten = 2 $, 7 $, 2 $ = 11 $.
Eingabe:
$days = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 30, 31]; $costs = [2, 7, 15];
Gesamtkosten = 15 $ 2 $ = 17 $.
Die zeitliche Komplexität der Lösung beträgt O(365), da wir alle Tage des Jahres durchlaufen und für jeden Tag konstante Zeitoperationen durchführen (Überprüfung der Reisetage und Aktualisierung des DP). Array). Somit läuft die Lösung in linearer Zeit relativ zur Anzahl der Tage.
$days = [1, 4, 6, 7, 8, 20]; $costs = [2, 7, 15]; echo mincostTickets($days, $costs); // Output: 11
$days = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 30, 31]; $costs = [2, 7, 15]; echo mincostTickets($days, $costs); // Output: 17
Die Lösung berechnet mithilfe dynamischer Programmierung effizient die Mindestkosten für die Deckung der Reisetage. Durch Iteration über die Tage und Berücksichtigung aller möglichen Pässe (1-Tages-, 7-Tages-, 30-Tages-Pässe) findet der Algorithmus die optimale Strategie für den Kauf der Pässe. Die zeitliche Komplexität ist in Bezug auf die Anzahl der Tage linear und eignet sich daher für die Problembeschränkungen.
Kontaktlinks
Wenn Sie diese Serie hilfreich fanden, denken Sie bitte darüber nach, dem Repository einen Stern auf GitHub zu geben oder den Beitrag in Ihren bevorzugten sozialen Netzwerken zu teilen? Ihre Unterstützung würde mir sehr viel bedeuten!
Wenn Sie weitere hilfreiche Inhalte wie diesen wünschen, folgen Sie mir gerne:
Das obige ist der detaillierte Inhalt von. Mindestpreis für Tickets. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!