Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Trình biên dịch] Chuyển trung tố có lũy thừa sang hậu tố

    Cài đặt thuật toán Shunting-yard để chuyển một biểu thức trung tố sang hậu tố, có bổ sung toán tử lũy thừa ^.

    Cho biểu thức trung tố (không chứa khoảng trắng) gồm toán hạng là chữ số đơn 0-9, các toán tử + - * / ^ và dấu ngoặc đơn ( ). Độ ưu tiên: ^ cao nhất, tiếp theo * /, thấp nhất là + -. Các toán tử + - * / có tính kết hợp trái; riêng ^ có tính kết hợp phải (ví dụ 2322^{3^2}232 được hiểu là 2(32)2^{(3^2)}2(32), không phải (23)2(2^3)^2(23)2).

    Hãy chuyển biểu thức đã cho sang dạng hậu tố.

    Ví dụ: 3+4*2 chuyển thành hậu tố là 3 4 2 * +; 2^3^2 chuyển thành 2 3 2 ^ ^ (vì kết hợp phải).

    • Định dạng đầu vào:

      Một dòng duy nhất chứa biểu thức trung tố hợp lệ, không có khoảng trắng, chỉ gồm chữ số 0-9, các ký tự + - * / ^ ( ).

    • Định dạng đầu ra:

      In ra biểu thức hậu tố tương ứng, các token cách nhau đúng một khoảng trắng, trên một dòng.

    Ví dụ:

    Đầu vào:

    3+4*2

    Đầu ra:

    3 4 2 * +
    

    Đầu vào:

    (1+2)*3

    Đầu ra:

    1 2 + 3 *
    

    Đang tải editor...