У вас є вхідний масив розміром m * n. Кожна комірка масиву заповнена або P, або T. Єдина операція, яку ви можете зробити на масиві, - це перевернути стовпці. Коли ви перегортаєте стовпець, літери у всіх комірках цього стовпця перемикаються (P стає T і viceversa). Якщо у вас є "x" рядків з однаковою літерою (наприклад, PPPP), ви отримуєте крапку. Створіть алгоритм, який приймає масив і повертає рішення (які стовпчики перевертати) таким чином, щоб в результаті масиву була максимальна кількість точок.
Примітка. Якщо існує декілька рішень, які дають найвищий бал, виберіть той, який має найменшу кількість сальто. Приклад:
Вхідний масив:
PPTPP
PPTPP
PPTTP
PPPTT
PPPTT
Вихід:
3
Пояснення:
Рішення, яке дає найвищі бали: стовпчик "Перевернути" №. 3
Тоді початковий масив буде таким:
PPPPP // 1 point
PPPPP // 1 point
PPPTP
PPTTT
PPTTT
//Total: 2 points
Зауважте, що можна також перевернути стовпці 4 і 5, щоб отримати дві оцінки, але для цього потрібен додатковий фліп.
Ви можете використовувати будь-який зручний формат введення для представлення двовимірного масиву, а також ви можете будь-які два різних, але фіксованих, значення для представлення P
та T
.
Це кодовий гольф, тому найкоротша відповідь (у байтах) виграє.