Bạn có một mảng đầu vào có kích thước m * n. Mỗi ô trong mảng được điền bằng P hoặc T. Thao tác duy nhất bạn có thể thực hiện trên mảng là lật cột. Khi bạn lật một cột, các chữ cái trong tất cả các ô của cột đó sẽ chuyển (P trở thành T và viceversa). Nếu bạn có 'x' số hàng có cùng chữ cái (ví dụ: PPPP) thì bạn sẽ nhận được điểm. Thiết kế một thuật toán lấy trong mảng và trả về một giải pháp (cột nào cần lật) sao cho mảng kết quả có số điểm tối đa có thể.
Lưu ý: Trong trường hợp có nhiều giải pháp mang lại số điểm cao nhất, hãy chọn giải pháp có số lần lật thấp nhất. Thí dụ:
Mảng đầu vào:
PPTPP
PPTPP
PPTTP
PPPTT
PPPTT
Đầu ra:
3
Giải thích:
Một giải pháp mang lại điểm cao nhất: Lật cột số. 3
Sau đó, mảng ban đầu sẽ là:
PPPPP // 1 point
PPPPP // 1 point
PPPTP
PPTTT
PPTTT
//Total: 2 points
Lưu ý rằng người ta cũng có thể lật cột 4 và 5 để có được hai điểm, nhưng điều đó cần một lần lật bổ sung.
Bạn có thể sử dụng bất kỳ định dạng đầu vào thuận tiện nào để biểu diễn mảng hai chiều và bạn cũng có thể sử dụng bất kỳ hai giá trị riêng biệt nhưng cố định nào để biểu diễn Pvà T.
Đây là mã golf, vì vậy câu trả lời ngắn nhất (tính bằng byte) sẽ thắng.