Middle — Senior
Jak změnit řešení pro výpočet součtů a kombinací kostek, pokud je počet kostek parametr?
sobes.tech AI
Odpověď od AI
Pokud se počet kostek stane parametrem, musí být řešení pro počítání součtů a kombinací dynamické a škálovatelné.
Přístupy:
-
Rekurzivní průchod:
- Pro každou kostku procházejte všechny možné hodnoty (1–6).
- Rekurzivně sčítejte hodnoty a počítejte počet kombinací pro každý součet.
-
Dynamické programování:
- Použijte pole nebo slovník, kde index je součet a hodnota je počet způsobů, jak tento součet dosáhnout.
- Pze začátku, pro 0 kostek, je počet způsobů, jak dosáhnout součtu 0, 1.
- Pro každou kostku aktualizujte pole přidáním počtu způsobů pro nové součty.
Příklad v Go s dynamickým programování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žití:
// sums := diceSums(3)
// fmt.Println(sums) // Ukáže počet kombinací pro každý součet při 3 kostkách
Tento přístup umožňuje efektivně vypočítat počet kombinací pro libovolný počet kostek bez manuálního procházení všech variant.