Sobes.tech
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:

  1. Ricorsione:

    • Per ogni dado, esplorare tutti i valori possibili (1–6).
    • Ricorsivamente sommare i valori e contare il numero di combinazioni per ogni somma.
  2. 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.