Найти Π² Π”Π·Π΅Π½Π΅

πŸ”₯ «Как Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π° динамичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π•Π“Π­ ΠΈ Π½Π΅ сойти с ΡƒΠΌΠ°: Ρ€Π°Π·Π±ΠΎΡ€ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ PythonΒ»

ВступлСниС:
πŸ“Œ «ДинамичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅Β» Π·Π²ΡƒΡ‡ΠΈΡ‚ слоТно? На самом Π΄Π΅Π»Π΅ это просто способ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π½Π° малСнькиС шаги. БСгодня Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π·Π°Π΄Π°Ρ‡Ρƒ, которая встрСчаСтся Π² Π•Π“Π­ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π³ΠΎΠ΄, ΠΈ Π΄ΠΎΠΊΠ°ΠΆΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ β€” это Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΈ Π΄Π°ΠΆΠ΅ красиво! Β«Π˜ΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΌΠ½ΠΎΠΆΠ°Ρ‚ΡŒ число Π½Π° 2, Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ 1 ΠΈΠ»ΠΈ 3. Бколько сущСствуСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΡ… число 1 Π² число 15, Ссли Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… дСйствиях Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ числа 10?Β» πŸ” Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ?
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄, Π²Π΅Π΄ΡƒΡ‰ΠΈΡ… ΠΎΡ‚ 1 ΠΊ 15, минуя 10. πŸ’‘ ΠŸΠΎΡ‡Π΅ΠΌΡƒ это Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎ для Π•Π“Π­?
Π—Π°Π΄Π°Ρ‡ΠΈ Π½Π° подсчСт ΠΏΡƒΡ‚Π΅ΠΉ с ограничСниями ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΠΈΠ΅ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ€Π΅ΠΊΡƒΡ€Ρ€Π΅Π½Ρ‚Π½Ρ‹Π΅ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ β€” ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Π½Π°Π²Ρ‹ΠΊ для программиста. МоТно ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ всС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π½ΠΎ:
❌ Π­Ρ‚ΠΎ Π·Π°ΠΉΠΌΠ΅Ρ‚ часы.
❌ Π›Π΅Π³ΠΊΠΎ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ.
βœ… РСшСниС Ρ‡Π΅Ρ€Π΅Π· динамичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сократит врСмя Π΄ΠΎ 5 ΠΌΠΈΠ½ΡƒΡ‚! def count_programs():
dp = [0] * 16 # Массив для хранСния количСства ΠΏΡƒΡ‚Π΅ΠΉ Π΄ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ числа
dp[1] = 1 # ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ условиС
ОглавлСниС

ВступлСниС:
πŸ“Œ
«ДинамичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅Β» Π·Π²ΡƒΡ‡ΠΈΡ‚ слоТно? На самом Π΄Π΅Π»Π΅ это просто способ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π½Π° малСнькиС шаги. БСгодня Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π·Π°Π΄Π°Ρ‡Ρƒ, которая встрСчаСтся Π² Π•Π“Π­ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π³ΠΎΠ΄, ΠΈ Π΄ΠΎΠΊΠ°ΠΆΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ β€” это Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΈ Π΄Π°ΠΆΠ΅ красиво!

Β«Π˜ΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΌΠ½ΠΎΠΆΠ°Ρ‚ΡŒ число Π½Π° 2, Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ 1 ΠΈΠ»ΠΈ 3. Бколько сущСствуСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΡ… число 1 Π² число 15, Ссли Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… дСйствиях Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ числа 10?Β»

Π¨Π°Π³ 1: ПониманиС условия

πŸ” Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ?
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄, Π²Π΅Π΄ΡƒΡ‰ΠΈΡ… ΠΎΡ‚ 1 ΠΊ 15, минуя 10.

πŸ’‘ ΠŸΠΎΡ‡Π΅ΠΌΡƒ это Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎ для Π•Π“Π­?
Π—Π°Π΄Π°Ρ‡ΠΈ Π½Π° подсчСт ΠΏΡƒΡ‚Π΅ΠΉ с ограничСниями ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΠΈΠ΅
ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ€Π΅ΠΊΡƒΡ€Ρ€Π΅Π½Ρ‚Π½Ρ‹Π΅ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ β€” ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Π½Π°Π²Ρ‹ΠΊ для программиста.

Π¨Π°Π³ 2: РСшСниС β€žΠ² Π»ΠΎΠ±β€œ (ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ это плохая идСя)

МоТно ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ всС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π½ΠΎ:
❌ Π­Ρ‚ΠΎ Π·Π°ΠΉΠΌΠ΅Ρ‚ часы.
❌ Π›Π΅Π³ΠΊΠΎ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ.
βœ…
РСшСниС Ρ‡Π΅Ρ€Π΅Π· динамичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сократит врСмя Π΄ΠΎ 5 ΠΌΠΈΠ½ΡƒΡ‚!

Π¨Π°Π³ 3: Алгоритм Π½Π° Python

def count_programs():
dp = [0] * 16 # Массив для хранСния количСства ΠΏΡƒΡ‚Π΅ΠΉ Π΄ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ числа
dp[1] = 1 # ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ условиС: ΠΈΠ· 1 Π² 1 β€” 1 способ

for n in range(1, 15):
if n == 10: # ΠŸΡ€ΠΎΠΏΡƒΡΠΊΠ°Π΅ΠΌ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Π½ΠΎΠ΅ число
continue
next_numbers = [n*2, n+1, n+3]
for next_n in next_numbers:
if next_n <= 15:
dp[next_n] += dp[n]

return dp[15]

print("ΠžΡ‚Π²Π΅Ρ‚:", count_programs())

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄?

  1. Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ массив dp, Π³Π΄Π΅ dp[i] β€” число способов ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ число i.
  2. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ числа ΠΎΡ‚ 1 Π΄ΠΎ 14 (ΠΊΡ€ΠΎΠΌΠ΅ 10) считаСт, сколько ΠΏΡƒΡ‚Π΅ΠΉ Π²Π΅Π΄Π΅Ρ‚ ΠΊ числам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ Γ—2, +1, +3.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: 98 способов.

Π¨Π°Π³ 4: Как это пригодится Π½Π° экзамСнС?

βœ… ДинамичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ встрСчаСтся Π² 3-5 Π·Π°Π΄Π°Ρ‡Π°Ρ… Π•Π“Π­.
βœ… Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΡƒΡ‡ΠΈΡ‚
Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ β€” Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ слоТноС Π½Π° простыС части.
βœ… Код Π½Π° Python ΠΌΠΎΠΆΠ½ΠΎ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ Π»ΡŽΠ±ΡƒΡŽ ΠΏΠΎΡ…ΠΎΠΆΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ.

Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΎΡ‚ SvetIT:

  1. Π’Ρ€Π΅Π½ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡Π°Ρ…: Π‘Π΅Ρ€ΠΈΡ‚Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… Π»Π΅Ρ‚.
  2. ΠŸΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ΄ сразу: НС Π½Π°Π΄Π΅ΠΉΡ‚Π΅ΡΡŒ Π½Π° Ρ€ΡƒΡ‡Π½ΠΎΠΉ подсчСт β€” это риск.
  3. Π£Ρ‡ΠΈΡ‚Π΅ Ρ‚Π΅ΠΎΡ€ΠΈΡŽ: ПониманиС Ρ€Π΅ΠΊΡƒΡ€Ρ€Π΅Π½Ρ‚Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΡƒΠ» спасСт Π΄Π°ΠΆΠ΅ Π² нСстандартных Π·Π°Π΄Π°Ρ‡Π°Ρ….

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒ сСбя!

✏️ ΠœΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ количСство ΠΏΡƒΡ‚Π΅ΠΉ ΠΎΡ‚ 2 Π΄ΠΎ 20 с Π·Π°ΠΏΡ€Π΅Ρ‚ΠΎΠΌ числа 5. ΠžΡ‚Π²Π΅Ρ‚ Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π² коммСнтариях!

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹?
Π’ SvetIT Π½Π΅ зубрят ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ β€”
ΡƒΡ‡Π°Ρ‚ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ. Наши ΡƒΡ‡Π΅Π½ΠΈΠΊΠΈ:
β†’ Π Π΅ΡˆΠ°ΡŽΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° 20% быстрСС благодаря алгоритмичСскому ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΡŽ.
β†’ ΠŸΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π² Ρ‚ΠΎΠΏΠΎΠ²Ρ‹Π΅ IT-Π²ΡƒΠ·Ρ‹ (МЀВИ, Π’Π¨Π­, Π’ΡƒΠ»Π“Π£).
β†’ ΠŸΠΈΡˆΡƒΡ‚ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚, Π° Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚.

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ Ρ‚Π°ΠΊ ΠΆΠ΅?
πŸ‘‰ ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° ΠΊΠ°Π½Π°Π», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·Π±ΠΎΡ€Ρ‹ Π·Π°Π΄Π°Ρ‡ ΠΈ сСкрСты ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ.
πŸ‘‰ ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ 10 подписчикам β€”
Ρ‡Π΅ΠΊ-лист Β«5 ошибок Π½Π° Π•Π“Π­ ΠΏΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅Β» Π² Π»ΠΈΡ‡Π½Ρ‹Π΅ сообщСния!

#Π•Π“Π­_ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ° #Python_ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ #Π”ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ #SvetIT

P.S. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ для Π·Π°Π΄Π°Ρ‡ с большими числами. ΠžΡΡ‚Π°Π²Π°ΠΉΡ‚Π΅ΡΡŒ с Π½Π°ΠΌΠΈ! πŸ’»πŸš€