Tiene una matriz de entrada de tamaño m * n. Cada celda de la matriz se llena con P o T. La única operación que puede hacer en la matriz es voltear columnas. Cuando voltea una columna, las letras en todas las celdas de esa columna cambian (P se convierte en T y viceversa). Si tiene 'x' número de filas con la misma letra (por ejemplo, PPPP), obtendrá un punto. Diseñe un algoritmo que tome la matriz y devuelva una solución (qué columnas voltear) de modo que la matriz resultante tenga el máximo número de puntos posibles.
Nota: En caso de que haya múltiples soluciones que produzcan la puntuación más alta, elija la que tenga el menor número de vueltas. Ejemplo:
Matriz de entrada:
PPTPP
PPTPP
PPTTP
PPPTT
PPPTT
Salida:
3
Explicación:
Una solución que produce los puntos más altos: Voltear la columna no. 3
Entonces la matriz original sería:
PPPPP // 1 point
PPPPP // 1 point
PPPTP
PPTTT
PPTTT
//Total: 2 points
Tenga en cuenta que también se pueden voltear las columnas 4 y 5 para obtener una puntuación de dos, pero eso necesita un giro adicional.
Puede utilizar cualquier formato de entrada conveniente para representar la matriz bidimensional, y también puede representar dos valores distintos, pero fijos, para representar P
y T
.
Este es el código de golf, por lo que gana la respuesta más corta (en bytes).