Module: Modèles en programmation dynamique - 2


Problem

2 /5


Zuma

Problem

Chloé a récemment installé Zuma sur son téléphone. Le joueur reçoit une rangée de n gemmes, dont la i-ième a la couleur ci. Le but du jeu — détruisez toutes les pierres en aussi peu de secondes que possible.

En une seconde, Chloé peut choisir n'importe quelle sous-chaîne (une séquence de pierres adjacentes) qui est un palindrome et la supprimer. Après avoir retiré cette sous-chaîne, les pierres restantes sont déplacées pour former à nouveau une rangée continue. Quel est le nombre minimum de secondes nécessaires pour détruire toute la ligne ?

Rappelons qu'une chaîne (ou sous-chaîne) est un palindrome si elle se lit de la même manière de gauche à droite que de droite à gauche. Dans ce cas, cela signifie que la couleur de la première pierre est égale à la couleur de la dernière pierre, la couleur de la seconde est égale à la couleur de l'avant-dernière, et ainsi de suite.

Saisie :
La première ligne de l'entrée contient un seul entier n (1 ≤ n ≤ 500) — le nombre de pierres dans la rangée initiale.
La deuxième ligne contient n entiers, dont le i-ème est égal à ci (1 ≤ ci ≤ n) &mdash ; la couleur de la ième pierre de la rangée initiale.

Sortie :
Imprimer un seul entier — le nombre minimum de secondes nécessaires pour supprimer toutes les gemmes.

Exemples :
 
Entrée Sortie
3
1 2 1
1
3
1 2 3
3
7
1 4 4 2 3 2 1
2

Explications :
La séquence dans le troisième exemple est [1, 4, 4, 2, 3, 2, 1] -> [1, 4, 4, 1] -> ; []