494. Somme cible
Difficulté :Moyen
Sujets :Array, programmation dynamique, retour en arrière
Vous recevez un tableau de nombres entiers et une cible entière.
Vous souhaitez construire une expression à partir de nombres en ajoutant l'un des symboles ' ' et '-' avant chaque entier en nombres, puis en concaténant tous les entiers.
Renvoie le nombre d'expressions différentes que vous pouvez créer, qui sont évaluées comme cibles.
Exemple 1 :
Exemple 2 :
Contraintes :
Solution :
Le problème « Somme cible » consiste à créer des expressions utilisant les nombres dans un tableau nums en attribuant un signe ou - à chaque nombre. L’objectif est de calculer combien d’expressions de ce type correspondent à la cible donnée. Ce problème peut être résolu efficacement en utilisant la programmation dynamique ou le retour en arrière.
Sortie :
Défis :
Nous pouvons résoudre ce problème en utilisant la Programmation dynamique (transformation de somme de sous-ensembles) ou le Retour en arrière. Ci-dessous, nous utilisons la Programmation dynamique (DP) pour plus d'efficacité.
Observations clés :
Réorganiser les termes : somme(P) somme(N) = somme(nums)
Soit S la somme du sous-ensemble positif. Puis : S = (somme (nombres) cible) / 2
Implémentons cette solution en PHP : 494. Somme cible Validation des entrées : Logique de programmation dynamique : Résultat : Entrée : nums = [1, 1, 1, 1, 1], cible = 3 Entrée : nums = [1,1,1,1,1], cible = 3 Cette approche calcule efficacement le nombre de façons de former la somme cible à l'aide de la programmation dynamique. En réduisant le problème à une somme de sous-ensembles, nous exploitons la structure de DP pour de meilleures performances. 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!
Planifier
<?php
/**
* @param Integer[] $nums
* @param Integer $target
* @return Integer
*/
function findTargetSumWays($nums, $target) {
...
...
...
/**
* go to ./solution.php
*/
}
// Example usage:
$nums = [1, 1, 1, 1, 1];
$target = 3;
echo findTargetSumWays($nums, $target); // Output: 5
?>
Explication:
Exemple de procédure pas à pas
Complexité temporelle
Sortie pour exemple
Sortie : 5