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:
-
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.
-
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í.