Khi sinh mã máy cho một biểu thức số học từ mã ba địa chỉ, số thanh ghi tối thiểu cần thiết để tính biểu thức (không cần lưu tạm ra bộ nhớ) phụ thuộc vào thứ tự tính toán các nhánh con. Thuật toán gán nhãn Sethi–Ullman kinh điển xác định số này bằng đệ quy trên cây biểu thức:
Cho biểu thức dưới dạng dãy token hậu tố (postfix, như ở bài sinh TAC), hãy tính nhãn của nút gốc — chính là số thanh ghi tối thiểu cần dùng.
Dòng 1: số nguyên n (1≤n≤100) — số token của biểu thức hậu tố.
Dòng 2: n token cách nhau khoảng trắng, mỗi token là toán hạng (chữ thường a-z hoặc số nguyên không âm) hoặc toán tử trong + - * /. Dữ liệu đảm bảo là một biểu thức hậu tố hợp lệ.
In ra một số nguyên duy nhất — nhãn Sethi-Ullman (số thanh ghi tối thiểu) của nút gốc.
Ví dụ:
Đầu vào:
1
x
Đầu ra:
1
Đầu vào:
3
a b +
Đầu ra:
2
Đang tải editor...