Problem
Mit inheritance verwendet eine Unterklasse das Verhalten ihrer Oberklasse erneut und ergänzt ihr eigenes. Jedes Fahrzeug zahlt eine Maut; ein Lastwagen ist ein Fahrzeug, das für seine Achsen zusätzlich zahlt.
Jedes Fahrzeug ist eines von:
motorbike: zahlt 2.car: zahlt 5.truck <axles>: zahlt den Autotarif 5, plus 3 für jede Achse über den ersten beiden.
Implementiere vehicle_tolls(vehicles).
Eingabe
vehicles: Die Fahrzeuge, die die Mautstelle passieren.
Ausgabe
Gib die insgesamt eingenommene Maut zurück.
Einschränkungen
0 ≤ Anzahl der Fahrzeuge ≤ 100,000
2 ≤ Achsen ≤ 10
Beispiele
Eingabe:
vehicles = ["car", "motorbike", "truck 4"]
Erwartete Ausgabe:
expected = 18
Eingabe:
std::vector<std::string> vehicles = {"car", "motorbike", "truck 4"};
Erwartete Ausgabe:
long long expected = 18;
Eingabe:
string[] vehicles = new string[] {"car", "motorbike", "truck 4"};
Erwartete Ausgabe:
long expected = 18;
Erläuterung
5 + 2 + (5 + 3 × 2) = 18.
Eingabe:
vehicles = ["truck 2", "truck 3"]
Erwartete Ausgabe:
expected = 13
Eingabe:
std::vector<std::string> vehicles = {"truck 2", "truck 3"};
Erwartete Ausgabe:
long long expected = 13;
Eingabe:
string[] vehicles = new string[] {"truck 2", "truck 3"};
Erwartete Ausgabe:
long expected = 13;
Erläuterung
Ein Lastwagen mit 2 Achsen zahlt nur den Autotarif 5; ein Lastwagen mit 3 Achsen zahlt 5 + 3 = 8. Insgesamt 13.
So gehst du vor
Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.
Hinweis 1
Starte beim Pkw-Tarif von 5 und passe ihn je Fahrzeugtyp an.
Hinweis 2
Ein Lkw zahlt nur für Achsen über die ersten beiden hinaus extra.
Hinweis 3
Motorräder überschreiben die Grundregel mit festen 2.
Erwartete Komplexität
Zeit O(Anzahl der Fahrzeuge), zusätzlicher Speicher O(1)
Referenzen
Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.