664. Imprimante étrange
Difficulté : Difficile
Sujets : Chaîne, programmation dynamique
Il existe une imprimante étrange avec les deux propriétés spéciales suivantes :
Étant donné une chaîne s, renvoie le nombre minimum de tours dont l'imprimante a eu besoin pour l'imprimer.
Exemple 1 :
Exemple 2 :
Contraintes :
Solution :
Nous pouvons utiliser la programmation dynamique. L'idée est de minimiser le nombre de tours nécessaires pour imprimer la chaîne en la décomposant en sous-problèmes.
Le problème peut être résolu en utilisant la programmation dynamique. L'idée est de diviser le problème en sous-problèmes plus petits où vous déterminez le nombre de tours minimum requis pour imprimer chaque sous-chaîne de s. On peut tirer parti du constat suivant :
Soit dp[i][j] le nombre minimum de tours requis pour imprimer la sous-chaîne s[i:j+1].
Implémentons cette solution en PHP : 664. Imprimante étrange
Explication:
DP Array : Le tableau 2D dp[i][j] représente le nombre minimum de tours requis pour imprimer la sous-chaîne de l'index i à j.
Initialisation : On initialise dp[i][i] = 1 car un seul caractère peut être imprimé en un seul tour.
Remplir la table DP :
- Si les caractères en i et j sont les mêmes ($s[$i] == $s[$j]), alors l'impression de i à j prend le même nombre de tours que l'impression de i à j-1 puisque $s[$j] peut être imprimé dans le même tour que $s[$i].
- S'ils sont différents, on essaie de trouver le nombre minimum de tours en divisant la corde en différents points (k).
Résultat : Le nombre minimum de tours requis pour imprimer la chaîne entière est stocké dans dp[0][$n - 1].
Cette solution calcule efficacement le nombre minimum de tours requis pour imprimer la chaîne en considérant toutes les manières possibles de diviser et d'imprimer la chaîne.
Liens de contact
Si vous avez trouvé cette série utile, pensez à donner une étoile au référentiel sur GitHub ou à partager la publication sur vos réseaux sociaux préférés ?. Votre soutien signifierait beaucoup pour moi !
Si vous souhaitez du contenu plus utile comme celui-ci, n'hésitez pas à me suivre :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!