Middle — Senior
Чӣ гуна бояд ҳалли ҳисоб кардани ҷамъҳо ва омезишҳои кубҳо, агар шумораи кубҳо параметр бошад, тағир дода шавад?
sobes.tech AI
Ҷавоб аз AI
Агар шумораи кубикҳо ба параметр табдил ёбад, ҳалли ҳисоб кардани ҷамъҳо ва комбинаҳо бояд динамикӣ ва масштабшаванда бошад.
Равишҳо:
-
Гузариши рекурсивӣ:
- Барои ҳар як кубик, ҳамаи арзишҳои имконпазирро (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 кубик нишон медиҳад
Ин равиш имкон медиҳад, ки шумораи комбинаҳоро барои ҳар шумораи кубикҳо самаранок ҳисоб кард, бе гузаронидани дастӣ ҳамаи вариантҳоро.