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 biểu thức tiền tố sang hậu tố

    Biểu thức tiền tố (prefix / Polish notation) đặt toán tử trước hai toán hạng, ví dụ + a b nghĩa là a+ba+ba+b. Đây là dạng biểu diễn không cần độ ưu tiên hay dấu ngoặc, thường gặp khi phân tích cú pháp (parsing) trong các trình biên dịch dịch trực tiếp thành cây cú pháp trừu tượng (AST) rồi duyệt cây.

    Cho một biểu thức tiền tố hợp lệ, mỗi token cách nhau đúng một khoảng trắng. Toán hạng là một chữ cái thường (a-z) hoặc một số nguyên không âm; toán tử là một trong năm ký hiệu +, −, ×, ÷, ∧+,\,-,\,\times,\,\div,\,\wedge+,−,×,÷,∧ (viết + - * / ^, trong đó ^ là lũy thừa). Hãy chuyển biểu thức trên sang biểu thức hậu tố (postfix) tương đương, giữ nguyên cấu trúc cây cú pháp (chỉ thay đổi thứ tự token), các token trong kết quả cách nhau đúng một khoảng trắng.

    Ví dụ: tiền tố * + a b - c d (nghĩa là (a+b)×(c−d)(a+b)\times(c-d)(a+b)×(c−d)) chuyển thành hậu tố a b + c d - *.

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

      Một dòng duy nhất chứa biểu thức tiền tố hợp lệ, các token cách nhau đúng một khoảng trắng.

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

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

    Ví dụ:

    Đầu vào:

    a

    Đầu ra:

    a
    

    Đầu vào:

    + a b

    Đầu ra:

    a b +
    

    Đang tải editor...