Middle — Senior
Come modificare la soluzione per il calcolo di somme e combinazioni di dadi se il numero di dadi è un parametro?
sobes.tech AI
Risposta dell'AI
Se il numero di dadi diventa un parametro, la soluzione per contare somme e combinazioni deve essere dinamica e scalabile.
Approcci:
-
Ricorsione:
- Per ogni dado, esplorare tutti i valori possibili (1–6).
- Ricorsivamente sommare i valori e contare il numero di combinazioni per ogni somma.
-
Programmazione dinamica:
- Usare un array o dizionario dove l’indice rappresenta la somma e il valore il numero di modi per ottenere quella somma.
- Inizialmente, per 0 dadi, il numero di modi per ottenere la somma 0 è 1.
- Per ogni dado, aggiornare l’array aggiungendo il numero di modi per le nuove somme.
Esempio in Go con programmazione dinamica:
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
}
// Uso:
// sums := diceSums(3)
// fmt.Println(sums) // Mostrerà il numero di combinazioni per ogni somma con 3 dadi
Questo approccio permette di calcolare efficacemente il numero di combinazioni per qualsiasi numero di dadi senza dover esplorare manualmente tutte le varianti.