El problema: se le da una cadena que consta de las letras “R”, “G” y “B” y desea “cortar” algunas partes de la cadena de manera que tenga tres letras “R”, “G” y B”. Minimice la cantidad de cortes que realizó. Se garantiza que todas las letras aparecen en la cadena.
Descargo de responsabilidad: no he escrito el código del problema.
Este problema es solo un análisis de caso. Hay tres posibilidades esencialmente diferentes de cómo puedes cortar tres letras de la cadena:
- ¿Cuál es la diferencia entre los algoritmos de programación de tareas y los algoritmos de equilibrio de carga (estáticos y dinámicos)?
- ¿Es esta una función de clasificación de burbujas válida? Si es así, ¿entonces cómo?
- ¿Debería buscar la máquina de vectores de soporte (SVM) o la red neuronal (NN)? ¿Cual es mejor?
- ¿Cuál es el código para dividir una matriz en dos mitades iguales?
- ¿Qué es el mapa de bits? ¿Dónde lo usamos?
- Tres cartas consecutivas
- Dos letras consecutivas y una letra independiente
- Tres letras independientes
Busquemos la mejor solución para cada uno de los casos y elija la mejor entre estos tres óptimos.
- Aquí tenemos que enumerar todos los tripletes de letras consecutivas y elegir el mejor triplete entre los tripletes que contienen tres letras distintas. “Lo mejor” significa “minimizar el número de cortes necesarios”, es decir, las primeras tres letras y las últimas tres letras son mejores que los trillizos restantes porque puede cortarlo con un solo corte.
- Este caso es el más complicado. Debe enumerar todos los pares de letras consecutivas. Para cada par debes hacer lo siguiente. Denote las letras como a y [matemáticas] b [/ matemáticas]. Si [matemática] a = b [/ matemática], omita el par. De lo contrario, deje que [math] c [/ math] sea la tercera letra del conjunto, es decir, [math] \ {c \} = \ {R, G, B \} \ setminus \ {a, b \} [/ math]. Ahora tenemos que encontrar el número óptimo de cortes que necesitamos cortar c. Si la primera o la última letra de la cadena es igual a c, entonces es un corte, de lo contrario son dos cortes.
- En el último caso hay dos subcajas. Si la primera y la última letra son distintas, necesitamos 4 cortes. Si son iguales, necesitamos 5 cortes.
Eso es.
No me gustan esos problemas, creo que son tediosos por nada. La única razón de su existencia es enseñarte a tener cuidado. A veces, un problema tiene una idea hermosa pero requiere un trabajo tedioso para codificar una solución.