ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ Π΄Π΅ΡΠ΅Π²ΡΡ Π½Π° ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΡΡΡ, Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΠ°ΠΌΠ΅ΡΠ°Ρ-ΠΠ΅Π²Π΅Π½ΡΡΠ΅ΠΉΠ½Π° ΠΈ ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅ΠΌ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ².
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 1
ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π° Π²Ρ ΠΎΠ΄ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΡΠΈΡΡΡ Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π²Π»Π΅Π½Ρ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Π²Π΅Π΄Π΅Π½ΠΎ ΡΠΈΡΠ»ΠΎ 561, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Π΅ΡΠ½ΡΡΡ 165, Π° Π΅ΡΠ»ΠΈ -578, ΡΠΎ -875. Π Π΅ΡΠΈΡΠ΅ Π·Π°Π΄Π°ΡΡ Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ β Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΡΡΠΎΠΊ ΠΈ Π±Π΅Π·. ΠΠ°ΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ?
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΡΡΠΎΠΊ Π·Π°Π΄Π°ΡΠ° ΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ:
ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠΎΠΊ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠΈΠΊΠ» while, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° num_remaining Π½Π΅ ΡΡΠ°Π½Π΅Ρ ΡΠ°Π²Π½ΡΠΌ Π½ΡΠ»Ρ. Π ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠΊΠ»Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
- Π£ΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ result Π½Π° 10 ΠΈ ΠΏΡΠΈΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊ Π½Π΅ΠΌΡ ΠΎΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ num_remaining Π½Π° 10 (ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΠΈΡΡΠ° ΡΠΈΡΠ»Π° num_remaining ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠΈΡΡΠΎΠΉ ΡΠΈΡΠ»Π° result).
- ΠΠ°ΡΠ΅ΠΌ num_remaining Π΄Π΅Π»ΠΈΡΡΡ Π½Π°ΡΠ΅Π»ΠΎ Π½Π° 10, ΡΡΠΎΠ±Ρ ΡΠ΄Π°Π»ΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΠΈΡΡΡ.
- ΠΠΎΡΠ»Π΅ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΡΠΈΠΊΠ»Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ result, ΠΏΡΠΈΡΠ΅ΠΌ Π΅ΡΠ»ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ num Π±ΡΠ»ΠΎ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ, ΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ -result.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ num ΡΠ°Π²Π½ΠΎ 123, ΡΠΎ Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠΊΠ»Π° result ΡΡΠ°Π½Π΅Ρ ΡΠ°Π²Π½ΡΠΌ 3, Π° num_remaining ΡΡΠ°Π½Π΅Ρ ΡΠ°Π²Π½ΡΠΌ 12. ΠΠΎ Π²ΡΠΎΡΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ result ΡΡΠ°Π½Π΅Ρ ΡΠ°Π²Π½ΡΠΌ 32, Π° num_remaining ΡΡΠ°Π½Π΅Ρ ΡΠ°Π²Π½ΡΠΌ 1. Π ΡΡΠ΅ΡΡΠ΅ΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ result ΡΡΠ°Π½Π΅Ρ ΡΠ°Π²Π½ΡΠΌ 321, Π° num_remaining ΡΡΠ°Π½Π΅Ρ ΡΠ°Π²Π½ΡΠΌ 0, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠΈΠΊΠ»Π°. Π ΠΈΡΠΎΠ³Π΅ ΡΡΠ½ΠΊΡΠΈΡ Π²Π΅ΡΠ½Π΅Ρ ΡΠΈΡΠ»ΠΎ 321. ΠΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ β O(n), Π³Π΄Π΅ n ΡΠ°Π²Π½ΠΎ ΡΠΈΡΠ»Ρ ΡΠΈΡΡ Π² ΡΠΈΡΠ»Π΅:
Π‘ΡΠ°Π²Π½ΠΈΠΌ Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ:
Π Π΅ΡΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΡΡΠΎΠΊ, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π·Π°ΠΌΠ΅ΡΠ½ΠΎ Π±ΡΡΡΡΠ΅Π΅:
ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ [::-1] Π΄Π»Ρ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠΎΠΊΠΈ Π² Python ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π½Π° C-ΡΡΠΎΠ²Π½Π΅ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ.
π ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΈΡΠΎΠ½ΠΈΡΡΠ°
ΠΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π½Π° Π½Π°ΡΠ΅ΠΌ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΈΡΠΎΠ½ΠΈΡΡΠ°Β»
ππΌ ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΎΠ±Π΅ΡΠ° ΠΏΠΎ Python
ΠΠΎΠ΄ΡΡΠ½ΡΡΡ ΡΠ²ΠΎΠΈ Π·Π½Π°Π½ΠΈΡ ΠΏΠΎ Python Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π° Π½Π°ΡΠ΅ΠΌ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΎΠ±Π΅ΡΠ° ΠΏΠΎ PythonΒ»
π§©π ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π°Π΄Π°Ρ ΠΏΠΎ Python
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΏΠΎ Python Π΄Π»Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π° Π½Π°ΡΠ΅ΠΌ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π°Π΄Π°Ρ ΠΏΠΎ PythonΒ»
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 2
ΠΡΡΠΈΡΠ»ΠΈΡΠ΅ ΡΠ°ΡΡΠ½ΠΎΠ΅ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ x Π½Π° y, Π³Π΄Π΅ Ρ ΠΈ y β ΡΠ΅Π»ΡΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π°. ΠΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ β ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠΉ ΡΠ΄Π²ΠΈΠ³.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΡΠΎ Π·Π°Π΄Π°ΡΠΊΠ° Ρ ΠΏΠΎΠ΄Π²ΠΎΡ ΠΎΠΌ β ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ y Π² ΡΠΈΠΊΠ»Π΅ Π²ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΈΠ· x Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΎΡΡΠ°ΡΠΎΠΊ Π½Π΅ ΡΡΠ°Π½Π΅Ρ ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ y, ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΠ°ΠΌΡΠΌ Π·Π°ΡΡΠ°ΡΠ½ΡΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ y = 1, a x = 231 β1, Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ 231 β 1 ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ:
ΠΠΎΠ»Π΅Π΅ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄:
- ΠΠ°ΠΉΡΠΈ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ k, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ 2k y <= x.
- ΠΡΡΠ΅ΡΡΡ 2k y ΠΈΠ· x.
- ΠΠΎΠ±Π°Π²ΠΈΡΡ 2k ΠΊ ΡΠ°ΡΡΠ½ΠΎΠΌΡ.
Π ΠΏΡΠΈΠΌΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Ρ = (1011)2 ΠΈ y = (10)2, ΡΠΎ k = 2, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ 2 * 22 <= 11 ΠΈ 2 * 23 > 11. ΠΡ Π²ΡΡΠΈΡΠ°Π΅ΠΌ (1000)2 ΠΈΠ· (1011)2, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ (11)2, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ 2k = 22 = (100)2 ΠΊ ΡΠ°ΡΡΠ½ΠΎΠΌΡ, ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ x = (11)2.
ΠΠ»Π°Π²Π½ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ 2k y β ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ΅Π½Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π°, Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ x ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ Π²Π΄Π²ΠΎΠ΅ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ Π½Π°Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π²ΡΠ΅ Π΅ΡΠ΅ Π΄Π°Π»Π΅ΠΊ ΠΎΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²Π°: Π΅ΡΠ»ΠΈ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°ΡΡΠ½ΠΎΠ³ΠΎ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ x Π½Π° y ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ n Π±ΠΈΡΠΎΠ², Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΎ Π·Π° O(n) ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ. ΠΡΠ»ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π΅ k, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ 2k y <= x, Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎ ΡΠ΅ΡΠ΅Π· k, ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(n), ΡΡΠΎ Π² ΠΈΡΠΎΠ³Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ O(n2) Π°Π»Π³ΠΎΡΠΈΡΠΌΡ.
ΠΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π½Π°ΠΉΡΠΈ k Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ β ΡΡΠ΅ΡΡΡ, ΡΡΠΎ k ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ. Π’ΠΎ Π΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, ΡΡΠΎ 20y, 21y, 22y ΠΌΠ΅Π½ΡΡΠ΅ Π»ΠΈΠ±ΠΎ ΡΠ°Π²Π½ΠΎ x, ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ k, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ 2k y <= x, Π² ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΡΡ Ρ x Π½ΡΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ 2k-1y, 2k-2, 2k-3y ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ k Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π²Π½ΠΎ (100)2 ΠΊ, Π° x = (11)2. Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ k, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ 2k y <= (11)2 ΡΠ°Π²Π½ΠΎ 0, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ 20 = (1)2 ΠΊ ΡΠ°ΡΡΠ½ΠΎΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ (101)2. ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΡΠΈΠΊΠ» Ρ (11)2 β (10)2 = (1)2. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ (1)2 < y, Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ β ΡΠ°ΡΡΠ½ΠΎΠ΅ ΡΠ°Π²Π½ΠΎ (101)2, ΠΎΡΡΠ°ΡΠΎΠΊ ΡΠ°Π²Π΅Π½ (1)2. ΠΠΎ ΡΡΡΠΈ, ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡΡΠ΅ΠΌ Π²ΡΡΠΈΡΠ°Π½ΠΈΡ ΠΊ Π΄Π²ΠΎΠΈΡΠ½ΡΠΌ ΡΠΈΡΠ»Π°ΠΌ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π±ΠΈΡ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ Π½Π° power ΡΠ°Π·ΡΡΠ΄ΠΎΠ², ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° 2**power. ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΡΠ΄Π²ΠΈΠ³ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π(1), ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ O(n):
Π‘ΡΠ°Π²Π½ΠΈΠΌ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΡΡΡΡΠΎΡΡΠ½ΠΎΠ³ΠΎ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ²:
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
πΌ ΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ ΠΏΠΎ Python, Django, Flask
ΠΡΡΡΠΈΠ΅ Π²Π°ΠΊΠ°Π½ΡΠΈΠΈ ΠΈΠ· ΠΌΠΈΡΠ° Python @pydevjob
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 3
ΠΠΌΠ΅ΡΡΡΡ ΡΠ΅ΠΊΡΡ text ΠΈ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠ° st. ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ st Π² text.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΡΡΡΡΠΎΡΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ β ΡΠΎΠ·Π΄Π°ΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΡΠΈΠΊΠ»:
ΠΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° O(nm), Π³Π΄Π΅ n β Π΄Π»ΠΈΠ½Π° ΡΠ΅ΠΊΡΡΠ°, Π° m β Π΄Π»ΠΈΠ½Π° ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ. ΠΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ β ΠΠΎΠΉΠ΅ΡΠ°-ΠΡΡΠ°, Π Π°Π±ΠΈΠ½Π°-ΠΠ°ΡΠΏΠ° ΠΈΠ»ΠΈ ΠΠ½ΡΡΠ°-ΠΠΎΡΡΠΈΡΠ°-ΠΡΠ°ΡΡΠ°. ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠΌ Π Π°Π±ΠΈΠ½Π°-ΠΠ°ΡΠΏΠ° β Π΅Π³ΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Ρ Π΅ΡΠΈ Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ, Π° ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΡΡΡΠΎΠΊΠΈ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ Ρ Π΅ΡΠ΅ΠΉ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΡΡΠ΅Ρ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠΎΠΌ Π²ΡΠ΅Ρ ΡΡΠ΅Π·ΠΎΠ² ΠΏΠΎΠ΄ΡΡΠ΄:
ΠΡΠ²ΠΎΠ΄:
ΠΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ±ΠΎΡΠ° Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°Π²Π½Π° O(n+m).
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 4
ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΡΡΠΈ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π°. ΠΡΠΈΠΌΠ΅ΡΡ Π΄Π΅ΡΠ΅Π²ΡΠ΅Π²:
ΠΠ΅ΡΠ²ΠΎΠ΅ ΠΈ ΡΡΠ΅ΡΡΠ΅ Π΄Π΅ΡΠ΅Π²ΡΡ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½Ρ, Π° Π²ΡΠΎΡΠΎΠ΅ β Π½Π΅Ρ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΠΌ Π΄Π΅ΡΠ΅Π²ΠΎΠΌ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π΄Π΅ΡΠ΅Π²ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎ ΠΈ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ, ΠΈ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ·Π»ΠΎΠ². Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π΄Π΅ΡΠ΅Π²ΠΎ Π½Π° ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΡΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π΅Π³ΠΎ Π·Π΅ΡΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΡΠ°Π²Π½ΠΈΡΡ Π΅Π³ΠΎ Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΠΎΠΌ. ΠΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° β O(n), Π³Π΄Π΅ n β ΡΠΈΡΠ»ΠΎ ΡΠ·Π»ΠΎΠ². ΠΡΠΎΠ²Π΅ΡΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ, Π΅ΡΠ»ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π»ΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π° ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΠΏΠ°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΡΠ΅Π² β Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° O(n), Π° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅Π½Π½Π°Ρ β O(h), Π³Π΄Π΅ h β Π²ΡΡΠΎΡΠ° Π΄Π΅ΡΠ΅Π²Π°:
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌΠΈ Π² ΡΡΠ»ΠΎΠ²ΠΈΠΈ Π΄Π΅ΡΠ΅Π²ΡΡΠΌΠΈ:
ΠΡΠ²ΠΎΠ΄:
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 5
ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΡΠ°Π²ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΡ S1 Π² ΡΡΡΠΎΠΊΡ S2. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ»ΠΎΠ²Π° Β«Π»ΠΈΠΌΡΠ·ΠΈΠ½Β» Π² Β«Π»ΠΈΠΌΠΎΠ½Π°Π΄Β» Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ 4 ΠΏΡΠ°Π²ΠΊΠΈ, Π° Π΄Π»Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠ»ΠΎΠ²Π° Β«ΠΊΠΎΡΠΊΠ°Β» ΠΊ ΡΠ»ΠΎΠ²Ρ Β«ΠΊΠΎΡΡΠ°Β» Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ 2 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΡΡΡΡΠΎΡΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ β ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΠΎΡΠ»ΠΈΡΠ°ΡΡΠΈΠ΅ΡΡ Π½Π° 1, 2, 3 ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΎΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π²ΡΠΎΡΡΡ ΡΡΡΠΎΠΊΡ. Π Ρ ΡΠ΄ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π±ΡΠ°ΡΡ 2n Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ². ΠΠΎΠ»Π΅Π΅ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ β Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠΌ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΡ ΠΠ°ΠΌΠ΅ΡΠ°Ρ-ΠΠ΅Π²Π΅Π½ΡΡΠ΅ΠΉΠ½Π°.
Π Π°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΠ΅Π²Π΅Π½ΡΡΠ΅ΠΉΠ½Π°, ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ΅ ΠΊΠ°ΠΊ ΡΠ΅Π΄Π°ΠΊΡΠΈΠΎΠ½Π½ΠΎΠ΅ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ β ΡΡΠΎ ΠΌΠ΅ΡΡΠΈΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ. Π Π°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π²ΡΡΠ°Π²ΠΊΠΈ, ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΈ Π·Π°ΠΌΠ΅Π½Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π² Π΄ΡΡΠ³ΡΡ. ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π·Π°Π΄Π°ΡΠ°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΠΈ ΠΎΡΡΠΎΠ³ΡΠ°ΡΠΈΠΈ, ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΡΡΠΎΠΊ ΠΈ Ρ.ΠΏ.
ΠΡΠΈΠ½ΡΠΈΠΏ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΡ ΠΠ΅Π²Π΅Π½ΡΡΠ΅ΠΉΠ½Π° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
1. ΠΠΎΠΏΡΡΡΠΈΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ Π΄Π²Π΅ ΡΡΡΠΎΠΊΠΈ S1 ΠΈ S2, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΡΠ°Π²Π½ΠΈΡΡ. ΠΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΌΠ°ΡΡΠΈΡΡ M ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ (len(S1) + 1) x (len(S2) + 1). ΠΠ°ΠΆΠ΄Π°Ρ ΡΡΠ΅ΠΉΠΊΠ° ΠΌΠ°ΡΡΠΈΡΡ M[i][j] Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠ°ΠΌΠΈ S1[0:i] ΠΈ S2[0:j].
2. ΠΠ° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΏΠ΅ΡΠ²Π°Ρ ΡΡΡΠΎΠΊΠ° ΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ ΠΌΠ°ΡΡΠΈΡΡ M: Π² ΡΡΠ΅ΠΉΠΊΡ M[i][0] ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ i, Π° Π² ΡΡΠ΅ΠΉΠΊΡ M[0][j] ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ j, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΡΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π² S1 ΠΈΠ»ΠΈ S2 Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ i ΠΈΠ»ΠΈ j ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π²ΡΡΠ°Π²ΠΊΠΈ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
3. ΠΠ°ΡΠ΅ΠΌ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΎΡΡΠ°Π²ΡΡΡΡΡ ΡΠ°ΡΡΡ ΠΌΠ°ΡΡΠΈΡΡ M. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΏΠ°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² S1[i-1] ΠΈ S2[j-1]. ΠΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ, ΡΠΎ M[i][j] ΠΏΡΠΎΡΡΠΎ ΡΠ°Π²Π½ΠΎ M[i-1][j-1], ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ ΠΌΠ΅Π½ΡΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, M[i][j] ΡΠ°Π²Π½ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΡ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ:
- M[i-1][j] + 1 (ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΈΠ· S1)
- M[i][j-1] + 1 (Π²ΡΡΠ°Π²ΠΊΠ° ΡΠΈΠΌΠ²ΠΎΠ»Π° Π² S1)
- M[i-1][j-1] + 1 (Π·Π°ΠΌΠ΅Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»Π° Π² S1 Π½Π° ΡΠΈΠΌΠ²ΠΎΠ» ΠΈΠ· S2)
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ β Π² Π½ΠΈΠΆΠ΅ΠΌ ΠΏΡΠ°Π²ΠΎΠΌ ΡΠ³Π»Ρ ΠΌΠ°ΡΡΠΈΡΡ M (M[len(S1)][len(S2)]) ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ S1 ΠΈ S2. ΠΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π²Π½ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π²ΡΡΠ°Π²ΠΊΠΈ, ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΈ Π·Π°ΠΌΠ΅Π½Ρ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ S1 Π² S2. ΠΠΎΡ ΡΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΌΠ°ΡΡΠΈΡΠ° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΡ ΠΠ΅Π²Π΅Π½ΡΡΠ΅ΠΉΠ½Π° Π΄Π»Ρ ΡΠ»ΠΎΠ² Β«ΠΊΠΎΡΠΊΠ°Β» ΠΈ Β«ΠΊΠΎΡΡΠ°Β»:
ΠΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ β O(len(s1)*len(s2)):
ΠΡΠ²ΠΎΠ΄:
***