2466. Comptez les façons de créer de bonnes cordes
Difficulté :Moyen
Sujets : Programmation dynamique
Étant donné les entiers zéro, un, faible et élevé, nous pouvons construire une chaîne en commençant par une chaîne vide, puis à chaque étape effectuer l'une des opérations suivantes :
Cela peut être effectué autant de fois que vous le souhaitez.
Une bonne chaîne est une chaîne construite par le processus ci-dessus ayant une longueur entre basse et haute (inclusive).
Renvoyer le nombre de différentes bonnes chaînes qui peuvent être construites satisfaisant ces propriétés. Puisque la réponse peut être grande, renvoyez-la modulo 109 7.
Exemple 1 :
Exemple 2 :
Contraintes :
Indice :
Solution :
Nous devons nous concentrer sur la construction de chaînes de différentes longueurs et compter le nombre de chaînes valides qui remplissent les conditions données. Décomposons l'approche :
Définition de l'État :
Laissez dp[i] représenter le nombre de chaînes valides de longueur i qui peuvent être construites en utilisant les valeurs zéro et un fournies.
Relation de récidive :
La relation de récurrence devient :
dp[i] = dp[i - zéro] dpi - un
Cas de base :
Calcul final :
Implémentons cette solution en PHP : 2466. Comptez les façons de créer de bonnes cordes
Explication:
- Initialisation : Nous commençons par définir le cas de base dp[0] = 1, ce qui signifie qu'il existe une façon de former une chaîne de longueur 0 (la chaîne vide).
- Mise à jour de la programmation dynamique : Pour chaque longueur de chaîne possible i de 1 à haute, nous vérifions si nous pouvons ajouter une chaîne de longueur zéro ou un à une chaîne plus petite. Nous mettons à jour dp[i] en conséquence en ajoutant le nombre de façons de former une chaîne de longueur i-zero et i-one, en nous assurant que le résultat est pris modulo 109 7.
- Calcul du résultat final : Nous résumons toutes les valeurs de dp[i] pour i dans la plage [low, high] pour obtenir le nombre final de chaînes valides.
Complexité temporelle :
Ainsi, la complexité temporelle globale est ** O(high) **, ce qui est suffisamment efficace pour les limites d'entrée.
Cette solution résout efficacement le problème dans les limites des contraintes.
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!