Middle — Senior
Kā mainīt risinājumu, lai aprēķinātu summas un kombinācijas, ja kauliņu skaits ir parametrs?
sobes.tech AI
Atbilde no AI
Ja jūs spēļu kauliņu skaits kļūst par parametru, risinājumam summu un kombināciju skaitīšanai jābūt dinamiskam un mērogojamam.
Pieejas:
-
Rekursīva pārbaude:
- Katram kauliņam pārbaudiet visas iespējamās vērtības (1–6).
- Rekursīvi saskaitiet vērtības un skaitiet kombināciju skaitu katram summai.
-
Dinamisks programmēšana:
- Izmantojiet masīvu vai vārdnīcu, kur indekss ir summa, bet vērtība ir veidi, kā sasniegt šo summu.
- Sākotnēji, 0 kauliņiem, veidi, kā sasniegt summu 0, ir 1.
- Katram kauliņam atjauniniet masīvu, pievienojot veidu skaitu jaunajām sumām.
Piemērs Go ar dinamisko programmēšanu:
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
}
// Lietošana:
// sums := diceSums(3)
// fmt.Println(sums) // Parādīs katras summas kombināciju skaitu ar 3 kauliņiem
Šī pieeja ļauj efektīvi aprēķināt kombināciju skaitu jebkuram kauliņu skaitam, nevis manuāli pārbaudot visus variantus.