Solução Informática Avançado – Semana 58

por

Solução por Leonardo Paes

Para resolver este problema, utilizaremos programação dinâmica.

Seja $$DP_{l, r}$$ a resposta para a substring $$S_{l, l + 1, \dots, r}$$.

Então, temos dois casos para considerar:

  1. A primeira letra da substring é deletada separadamente do resto, então $$DP_{l, r} = 1 + DP_{l+1, r}$$.
  2. A primeira letra da substring é deletada juntamente com alguma outra letra (ambas as letras devem ser iguais), então: $$DP_{l, r} = \min \limits_{l < i \le r, S_i = S_r} DP_{l + 1, i – 1} + DP_{i, r}$$.

Segue abaixo o código para melhor entendimento:

https://gist.github.com/Rockbet/6d42af2a137617650ebf0892684765c6