Vous avez un tableau d'entrée de taille m * n. Chaque cellule du tableau est remplie de P ou de T. La seule opération que vous pouvez faire sur le tableau est de retourner les colonnes. Lorsque vous retournez une colonne, les lettres de toutes les cellules de cette colonne changent (P devient T et vice versa). Si vous avez «x» nombre de lignes avec la même lettre (par exemple PPPP), vous obtenez un point. Concevez un algorithme qui prend le tableau et renvoie une solution (quelles colonnes retourner) de telle sorte que le tableau résultant ait le nombre maximum de points possible.
Remarque: dans le cas où plusieurs solutions donnent le score le plus élevé, choisissez celle qui a le plus petit nombre de flips. Exemple:
Tableau d'entrée:
PPTPP
PPTPP
PPTTP
PPPTT
PPPTT
Production:
3
Explication:
Une solution qui rapporte les points les plus élevés: Flip colonne no. 3 Le
tableau d'origine serait alors:
PPPPP // 1 point
PPPPP // 1 point
PPPTP
PPTTT
PPTTT
//Total: 2 points
Notez que l'on pourrait également inverser les colonnes 4 et 5 pour obtenir un score de deux, mais cela nécessite un basculement supplémentaire.
Vous pouvez utiliser n'importe quel format d'entrée pratique pour représenter le tableau bidimensionnel, et vous pouvez également choisir deux valeurs distinctes, mais fixes, pour représenter Pet T.
Il s'agit du code golf, donc la réponse la plus courte (en octets) l'emporte.