Middle — Senior
Comment modifier la solution pour le calcul des sommes et des combinaisons de dés si le nombre de dés est un paramètre?
sobes.tech IA
Réponse de l'IA
Si le nombre de dés devient un paramètre, la solution pour compter les sommes et les combinaisons doit être dynamique et évolutive.
Approches :
-
Parcours récursif :
- Pour chaque dé, parcourir toutes les valeurs possibles (1–6).
- Récursivement, additionner les valeurs et compter le nombre de combinaisons pour chaque somme.
-
Programmation dynamique :
- Utiliser un tableau ou un dictionnaire où l’indice est la somme et la valeur est le nombre de façons d’obtenir cette somme.
- Initialement, pour 0 dés, le nombre de façons d’obtenir la somme 0 est 1.
- Pour chaque dé, mettre à jour le tableau en ajoutant le nombre de façons pour les nouvelles sommes.
Exemple en Go avec programmation dynamique :
func diceSums(numDice int) map[int]int {
dp := make(map[int]int)
dp[0] = 1
for i := 0; i < numDice; i++ {
next := make(map[int]int)
for sum, count := range dp {
for face := 1; face <= 6; face++ {
next[sum+face] += count
}
}
dp = next
}
return dp
}
// Utilisation :
// sums := diceSums(3)
// fmt.Println(sums) // Affichera le nombre de combinaisons pour chaque somme avec 3 dés
Cette approche permet de calculer efficacement le nombre de combinaisons pour n’importe quel nombre de dés sans parcourir toutes les options manuellement.