Sobes.tech
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:

  1. 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.
  2. 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.