Информатика · ҰБТ сұрағы №13893
def solve(n, k):
if k == 0 or k == n:
return 1
return solve(n - 1, k - 1) + solve(n - 1, k)
calls = 0
memo = {}
def solve2(n, k):
global calls
calls += 1
if k == 0 or k == n:
return 1
if (n, k) in memo:
return memo[(n, k)]
memo[(n, k)] = solve2(n - 1, k - 1) + solve2(n - 1, k)
return memo[(n, k)]
print(solve(6, 2))
print(solve2(6, 2), calls, len(memo))
solve2(6, 2) аяқталғаннан кейін memo[(4, 2)] мәні қандай?
Дұрыс жауабы мен түсіндірмесі
Жауабы: 6
memo[(4,2)] = C(4,2) = 6. (4,1) = 4, (3,2) = 3, (5,2) = 10.
«Алгоритмдер және программалау» тақырыбынан тағы
- Жадыны пайдаланбайтын solve(6, 2) шақыруы барлығы неше рет (бастапқыны қоса) орындалады?
- Графтар туралы қай тұжырымдар дұрыс?
- Алгоритмді оның уақыт күрделілігімен (ең нашар жағдайда, n — элемент саны) сәйкестендіріңіз.
- Python-дағы open() функциясының файл режимін оның әрекетімен сәйкестендіріңіз.
- Графтың қабырғалары: 1–2, 2–3, 3–4, 4–1, 1–3, 3–5, 5–6, 6–3. Қай тұжырым дұрыс?
- Программа экранға не шығарады? def h(a, b): c = 0 while b: a, b = b, a % b c += 1 return a, c print(*h(987, 61...
- solve(n, k) функциясы математикалық тұрғыдан қандай шаманы есептейді?
- a — өсу ретімен реттелген 100 элементті массив (индекстері 0–99), x мәні a[70]-те тұр. Код аяқталғанда steps а...