Middle — Senior
Əgər zarların sayı parametrdirsə, cəm və kombinasiyaların hesablanması üçün həll necə dəyişdirilir?
sobes.tech Süni İntellekt
AI-dan cavab
Əgər oyunçuların zar sayı parametr halına çevrilərsə, cəm və kombinasiyaları hesablamaq üçün həll dinamik və miqyaslana bilən olmalıdır.
Yanaşmalar:
-
Rekursiv keçid:
- Hər bir zar üçün, mümkün olan bütün dəyərləri (1–6) yoxlayın.
- Dəyərləri rekursiv toplayın və hər cəm üçün kombinasiyaların sayını hesablayın.
-
Dinamik proqramlaşdırma:
- İndeksi cəm olan və dəyəri bu cəmi əldə etmə yollarının sayı olan massiv və ya lüğət istifadə edin.
- Əvvəlcə, 0 zar üçün, 0 cəmi əldə etmə yollarının sayı 1-dir.
- Hər bir zar üçün, yeni cəmlər üçün yolların sayını əlavə edərək massivləri yeniləyin.
Go dilində dinamik proqramlaşdırma nümunəsi:
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
}
// İstifadə:
// sums := diceSums(3)
// fmt.Println(sums) // 3 zar üçün hər cəm üçün kombinasiyaların sayını göstərəcək
Bu yanaşma hər hansı sayda zar üçün kombinasiyaların sayını səmərəli hesablamağa imkan verir, bütün variantları əl ilə yoxlamadan.