Vấn đề này được giải quyết tốt hơn nhiều bên ngoài mysql, bằng một ngôn ngữ khác. Nói cách khác, bạn có một ma trận chỗ ngồi, một số chỗ ngồi trong số đó có người ngồi (màu xám):
và bạn muốn tìm tất cả các hình chữ nhật có kích thước đã cho , giả sử 3x5. Bạn có thể thực hiện việc này rất hiệu quả bằng hai đường truyền tuyến tính O(n)
thời gian thuật toán (n là số chỗ):
1) trong lần vượt qua đầu tiên , đi theo cột, từ dưới lên trên và đối với mỗi ghế, biểu thị số lượng ghế liên tiếp có sẵn cho đến sau:
lặp lại, cho đến khi:
2) trong lần vượt qua thứ hai , đi theo hàng và tìm kiếm ít nhất 5 số liên tiếp lớn hơn hoặc bằng 3:
vì vậy, cuối cùng, bạn nhận được:
mang lại giải pháp:các dãy số này (vùng màu xanh lá cây) là các cạnh trên cùng của 2 hình chữ nhật có thể có 3x5 ghế trống.
Thuật toán có thể dễ dàng được nâng cao thành v.d. nhận được tất cả các hình chữ nhật với diện tích tối đa. Hoặc, nó có thể được sử dụng để tìm bất kỳ vùng liên tục nào (không chỉ có hình chữ nhật) của N ghế - chỉ là, trong lần vượt qua thứ hai, hãy tìm chuỗi số liên tục có tổng tối thiểu là N.