Đề bài
Với kế thừa, một lớp con tái sử dụng hành vi của lớp cha và bổ sung thêm phần của riêng nó. Mỗi phương tiện đều phải trả phí đường bộ; xe tải là một phương tiện trả thêm tiền theo số trục của nó.
Mỗi phương tiện thuộc một trong các loại sau:
motorbike: trả 2.car: trả 5.truck <axles>: trả mức của ô tô là 5, cộng thêm 3 cho mỗi trục vượt quá hai trục đầu tiên.
Hãy triển khai vehicle_tolls(vehicles).
Đầu vào
vehicles: Các phương tiện đi qua trạm thu phí.
Đầu ra
Trả về tổng phí đã thu.
Ràng buộc
0 ≤ số phương tiện ≤ 100,000
2 ≤ số trục ≤ 10
Ví dụ
Đầu vào:
vehicles = ["car", "motorbike", "truck 4"]
Kết quả mong đợi:
expected = 18
Đầu vào:
std::vector<std::string> vehicles = {"car", "motorbike", "truck 4"};
Kết quả mong đợi:
long long expected = 18;
Đầu vào:
string[] vehicles = new string[] {"car", "motorbike", "truck 4"};
Kết quả mong đợi:
long expected = 18;
Giải thích
5 + 2 + (5 + 3 × 2) = 18.
Đầu vào:
vehicles = ["truck 2", "truck 3"]
Kết quả mong đợi:
expected = 13
Đầu vào:
std::vector<std::string> vehicles = {"truck 2", "truck 3"};
Kết quả mong đợi:
long long expected = 13;
Đầu vào:
string[] vehicles = new string[] {"truck 2", "truck 3"};
Kết quả mong đợi:
long expected = 13;
Giải thích
Một xe tải 2 trục chỉ trả mức của ô tô là 5; một xe tải 3 trục trả 5 + 3 = 8. Tổng là 13.
Hướng tiếp cận
Hãy tự thử trước, sau đó mở từng gợi ý một.
Gợi ý 1
Bắt đầu từ mức giá ô tô là 5 rồi điều chỉnh theo loại xe.
Gợi ý 2
Xe tải chỉ trả thêm cho các trục sau hai trục đầu.
Gợi ý 3
Xe máy ghi đè quy tắc gốc bằng mức cố định 2.
Độ phức tạp mong đợi
thời gian O(số phương tiện), bộ nhớ phụ O(1)
Tham khảo
Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.