Middle — Senior
Kako izmeniti rešenje za računanje suma i kombinacija kockica ako je broj kockica parametar?
sobes.tech АИ
Одговор од АИ
Ако број коцки постане параметар, решење за пребројавање збирова и комбинација треба да буде динамично и скалабилно.
Приступи:
-
Рекурзивни преглед:
- За сваки коцки прегледајте све могуће вредности (1–6).
- Рекурзивно сабирајте вредности и бројите број комбинација за сваки збир.
-
Динамичко програмирање:
- Користите низ или речник где је индекс збир, а вредност број начина да се тај збир постигне.
- Почетно, за 0 коцки, број начина да се постигне збир 0 је 1.
- За сваку коцку ажурирајте низ додавањем броја начина за нове збирове.
Пример у Go-у са динамичким програмирањем:
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
}
// Коришћење:
// sums := diceSums(3)
// fmt.Println(sums) // Приказује број комбинација за сваки збир са 3 коцке
Овај приступ омогућава ефикасно израчунавање броја комбинација за било који број коцки без ручног прегледа свих варијанти.