Sobes.tech
Middle — Senior

Ako zmeniť riešenie pre výpočet súčtov a kombinácií kociek, ak je počet kociek parameter?

sobes.tech AI

Odpoveď od AI

Ak sa početok kociek stane parametrom, riešenie na počítanie súčtov a kombinácií musí byť dynamické a škálovateľné.

Prístupy:

  1. Rekurzívne prechádzanie:

    • Pre každú kocku prechádzajte všetky možné hodnoty (1–6).
    • Rekurzívne sčítajte hodnoty a počítajte počet kombinácií pre každý súčet.
  2. Dynamické programovanie:

    • Použite pole alebo slovník, kde index je súčet a hodnota je počet spôsobov, ako dosiahnuť tento súčet.
    • Na začiatku, pre 0 kociek, je počet spôsobov, ako dosiahnuť súčet 0, 1.
    • Pre každú kocku aktualizujte pole pridaním počtu spôsobov pre nové súčty.

Príklad v Go s dynamickým programovaním:

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
}

// Použitie:
// sums := diceSums(3)
// fmt.Println(sums) // Ukáže počet kombinácií pre každý súčet pri 3 kockách

Tento prístup umožňuje efektívne vypočítať počet kombinácií pre akýkoľvek počet kociek bez manuálneho prechádzania všetkých možností.