Sobes.tech
Middle — Senior

Kuidas muuta lahendust summade ja kombinatsioonide arvutamiseks, kui täringute arv on parameeter?

sobes.tech AI

Vastus AI-lt

Kui mänguküünalde arv muutub par parameetri, siis summade ja kombinatsioonide arvutamise lahendus peab olema dünaamiline ja skaleeritav.

Lähtepunktid:

  1. Rekursiivne läbikäik:

    • Iga küünla puhul vaadake läbi kõik võimalikud väärtused (1–6).
    • Rekursiivselt summeerige väärtused ja arvutage iga summa jaoks kombinatsioonide arv.
  2. Dünaamiline programmeerimine:

    • Kasutage massiivi või sõnastikku, kus indeks on summa ja väärtus on viis, kuidas seda summat saavutada.
    • Alguses, 0 küünla puhul, on viis, kuidas saavutada summa 0, 1.
    • Iga küünla puhul uuendage massiivi, lisades uute summade jaoks viiside arvu.

Näide Go keeles dünaamilise programmeerimisega:

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
}

// Kasutamine:
// sums := diceSums(3)
// fmt.Println(sums) // Näitab iga summa jaoks kombinatsioonide arvu 3 küünlaga

See lähenemine võimaldab tõhusalt arvutada iga küünlaste arvu jaoks kombinatsioonide arvu, ilma et peaks käsitsi kõiki variante läbi vaatama.