Deje que la cadena sea [math] S [/ math]. Formamos una nueva cadena [matemática] P = S + rev (S) [/ matemática]. donde [math] rev (S) [/ math] es el reverso de la cadena [math] S [/ math].
Ahora, mientras recorremos la matriz de sufijos de P si encontramos dos sufijos consecutivos (digamos [math] i [/ math] y [math] i + 1 [/ math]), donde uno de ellos pertenece a [math] S [/ matemática] y otra [matemática] rev (S) [/ matemática], sabemos que hemos encontrado un palíndromo de longitud [matemática] l = LCP (SA [i], SA [i + 1]) [/ matemática] , donde [math] LCP (x, y) [/ math] = prefijo común más largo de [math] x [/ math] y [math] y [/ math]. [math] SA [i] [/ math] denota el sufijo que ocurre en la posición [math] i [/ math] si clasificamos lexicográficamente todos los sufijos de la cadena.
Eso significa que tenemos palíndromos de longitud [matemática] 1,2,3… l [/ matemática]. Si [math] K \ le l [/ math], incremente la respuesta.
- Siendo un estudiante de matemáticas BSc sin cursos de computación, ¿cómo puedo aprender codificación para ser competitivo?
- ¿Cuáles serían las implicaciones para el campo de la teoría de la complejidad si se encontrara un algoritmo de tiempo polinomial alto para un problema NP-difícil?
- ¿Cuáles son los requisitos previos (matemáticos, de programación, etc.) que uno debe tener para convertirse en ingeniero de control?
- ¿Cuál es la base matemática necesaria para la programación competitiva?
- ¿Las matemáticas son muy difíciles en un programa BCA?