Sobes.tech
Middle — Senior

Hoe pas je de oplossing aan voor het berekenen van sommen en combinaties van dobbelstenen als het aantal dobbelstenen een parameter is?

sobes.tech AI

Antwoord van AI

Als het aantal dobbelstenen een parameter wordt, moet de oplossing voor het tellen van sommen en combinaties dynamisch en schaalbaar zijn.

Benaderingen:

  1. Recursieve doorloop:

    • Voor elke dobbelsteen alle mogelijke waarden (1–6) doorlopen.
    • Recursief de waarden optellen en het aantal combinaties voor elke som tellen.
  2. Dynamische programmering:

    • Gebruik een array of woordenboek waarbij de index de som is en de waarde het aantal manieren om die som te bereiken.
    • Aanvankelijk, voor 0 dobbelstenen, is het aantal manieren om som 0 te krijgen 1.
    • Voor elke dobbelsteen, werk de array bij door het toevoegen van het aantal manieren voor de nieuwe sommen.

Voorbeeld in Go met dynamische programmering:

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
}

// Gebruik:
// sums := diceSums(3)
// fmt.Println(sums) // Toont het aantal combinaties voor elke som bij 3 dobbelstenen

Deze aanpak maakt het mogelijk om efficiënt het aantal combinaties te berekenen voor elk aantal dobbelstenen zonder alle opties handmatig te doorlopen.