рдирдорд╕реНрддреЗ!
рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдореИрдВрдиреЗ
рдЯрд┐рдорд╕ рдСрдирд▓рд╛рдЗрди рдЬрдЬ рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдФрд░
рдЧрддрд┐рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдирд╛рдордХ рдПрдХ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЖрдпрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХрд╛рд░реНрдп рдореЗрд░реЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реБрдЪрд┐ рдХрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдХреНрд╕рд░ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рдорд╛рдзрд╛рди рдХреА рдЧрддрд┐ рдФрд░ рд▓рд╛рд▓рд┐рддреНрдп рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЧрддрд┐рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ?
рдбрд╛рдпрдиреЗрдорд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрдк-рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдПрдХ рд╡рд┐рднрд╛рдЬрди рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдореВрд▓ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдореЗрдВ "рд╕рд░рд▓" рд╣реЛрддрд╛ рд╣реИред "рдЧрддрд┐рд╢реАрд▓" рд╢рдмреНрдж "рдЖрдЧрдордирд╛рддреНрдордХ" рдХреЗ рдХрд░реАрдм рд╣реИ: рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрддреНрддрд░ рдХреБрдЫ рдЕрд░реНрде рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ
k , рдФрд░ рдореИрдВ рдЗрд╕рдХрд╛ рдЬрд╡рд╛рдм рдвреВрдВрдврдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ
k+1 ред рдЧрдгрд┐рдд рдореЗрдВ, рдпрд╣ рдПрдХ рдкреНрд░реЗрд░рдХ рд╕рдВрдХреНрд░рдордг рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рд╣реИред
рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг
рд╕рдмрд╕реЗ рд╣рдбрд╝рддрд╛рд▓реА рдФрд░ рд╕рд╛рдВрдХреЗрддрд┐рдХ рдХрд╛рд░реНрдп рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХрд╛ рдХрд╛рд░реНрдп рд╣реИ
рдПрди рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рдЕрдиреБрдХреНрд░рдо рдХреА рд╕рдВрдЦреНрдпрд╛ред
рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреБрдг рд╣реИрдВ:
F0=F1=1, Fn=FnтИТ1+FnтИТ2$
рдпрд╣ рддреБрд░рдВрдд рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реВрддреНрд░ рдХрд╛ рдЕрд░реНрде рд╣реИ:
int Fibonacci(int n) { if(n == 1 || n == 2) return 1; return Fibonacci(n-1) + Fibonacci(n-2); }
рдпрджрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ "рдЕрдВрдд рд╕реЗ" рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИ, рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдзрд┐ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдмреАрдЪ рд╕реНрдерд┐рдд рд╕рднреА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддреА рд╣реИ
0 рдФрд░
рдПрди :
int dpFibonacci(int n) { int prev1 = 1; int prev2 = 1; int curr = 0; for(int j = 2; j < n; j++) { curr = prev1 + prev2; prev1 = prev2; prev2 = curr; } return curr; }
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдмрдбрд╝реЗ рдХреЗ рд▓рд┐рдП
рдПрди рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рдХрдИ рдмрд╛рд░ рдордзреНрдпрд╡рд░реНрддреА рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдереЛрдбрд╝рд╛ рдФрд░ рдЬрдЯрд┐рд▓ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдЙрджрд╛рд╣рд░рдг 1. рдЖрдк рдПрдХ рдЯреЛрд▓ рд╕реАрдврд╝реА рдкрд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред рдкрд░ рдХрджрдо рд░рдЦрдирд╛ рд╣реИ
рдореИрдВ рдЖрдкрдХреЛ рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛
ai рд╕рд┐рдХреНрдХреЗред рдЖрдк рдЕрдЧрд▓реЗ рдЪрд░рдг рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдПрдХ рдкрд░ рдХреВрдж рд╕рдХрддреЗ рд╣реИрдВред рдХрд╛рд░реНрдп: рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдПрди рдХрджрдо рдФрд░ рд╕рдВрднрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ рд╕рд┐рдХреНрдХреЗ рдЦрд░реНрдЪ рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдкрд░ рдХрджрдо рд░рдЦрддреЗ рд╣реБрдП, рд╣рдо "рднреБрдЧрддрд╛рди" рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рдВрдЧреЗ рдЪрд░рдг рдореЗрдВ рднрд╛рдЧ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╣рдо рдмрдЪрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдПрдБ
рдб рдЬрд┐рд╕рдореЗрдВ
рдЬ -рдпрд╣ рд╕реНрдерд╛рди рдЙрди рд╕рд┐рдХреНрдХреЛрдВ рдХреА рдиреНрдпреВрдирддрдо (рдиреНрдпреВрдирддрдо) рд╕рдВрдЦреНрдпрд╛ рд╣реЛрдЧреА рдЬрд┐рдиреНрд╣реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
рдЬ рд╡реЗрдВ рдЪрд░рдгред рдпрд╣ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐
d1=a1, d2=a2 ред рдФрд░ рдлрд┐рд░ рд╣рдо рдкрд┐рдЫрд▓реЗ рджреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдХрджрдо рдЙрдард╛рдПрдВрдЧреЗ рдФрд░ рдХрджрдо рдХреА рд▓рд╛рдЧрдд рдХреЛ рд╕реНрд╡рдпрдВ рдЬреЛрдбрд╝реЗрдВрдЧреЗ:
di= min left(diтИТ1,diтИТ2 right)+ai$
рд╣рдо рд╕рдорд╕реНрдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓рддреЗ рд╣реИрдВ: рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдХреБрдЫ рдЪрд░рдгреЛрдВ рдореЗрдВ рдЖрдк рд╕рд┐рдХреНрдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐
ak<0 )ред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдХреНрдпрд╛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо рджреЗ?
рдирд┐рд░реНрдгрдпрдпрд╣ рдХреЗрд╡рд▓ рд╣рдорд╛рд░реА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреА "рд╢реБрд░реБрдЖрдд" рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрджрд┐ рдкрд╣рд▓реА рд╕реАрдврд╝реА рд╣рдореЗрдВ рд╕рд┐рдХреНрдХреЗ рдирд╣реАрдВ рд▓рд╛рддреА рд╣реИ, рддреЛ рдЗрд╕ рдкрд░ рдХреВрджрдирд╛ рдЙрдЪрд┐рдд рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ a1<0 , рдЕрдкрдиреЗ рд╕рд┐рдХреНрдХреЛрдВ рдХреЛ рд░рдЦрдирд╛ рдФрд░ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, d2= min left(0,d1 right)+a2 ред
рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ "рджреНрд╡рд┐-рдЖрдпрд╛рдореА" рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг 2. рднреВрд▓рднреБрд▓реИрдпрд╛ рдореЗрдВ рд╣реИ
рдПрди рдореА рдХрдорд░реЗ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рд╕реЛрдирд╛ рд╣реЛрддрд╛ рд╣реИ (рдПрдХ рдкрд┐рдВрдЬрд░реЗ рдореЗрдВ
(i,j) рд╣реИ
aij рд╕реЛрдирд╛)ред рдХрд╛рд░реНрдп рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдПрдХ рдмрд┐рдВрджреБ рд╕реЗ рдЕрдзрд┐рдХрддрдо рдорд╛рд░реНрдЧ рдХреЗ рд╕рд╛рде рд╕реЛрдиреЗ рдХреА рдЕрдзрд┐рдХрддрдо рдорд╛рддреНрд░рд╛ рдХреНрдпрд╛ рдПрдХрддреНрд░ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ
(0,0) рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░
(n,m) рдЕрдЧрд░ рдЖрдк рдиреАрдЪреЗ рдпрд╛ рджрд╛рдИрдВ рдУрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╕реЗрд▓ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдорд╛рд░реНрдЧ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
(i,j) ред рд╣рдо рдпрд╣рд╛рдВ рджреЛ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ -
(iтИТ1,j) рдФрд░
(i,jтИТ1) ред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЗрди рджреЛ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╖реНрдЯрддрдо рдорд╛рд░реНрдЧ рдЬреНрдЮрд╛рдд рд╣реИрдВ (рд╡реЗ рдХрд┐рд╕реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ
рдб ), рдлрд┐рд░ рд╕реЗрд▓ рдХреЗ рд▓рд┐рдП рдЬрд╡рд╛рдм
(i,j) рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛:
dij= max left(diтИТ1j,dijтИТ1 right)+aijред$
рдпрд╣ рдПрдХ рдФрд░ рдХреНрд▓рд╛рд╕рд┐рдХ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛рд░реНрдп рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рдВрд╢реЛрдзрди рдЦреЗрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдХрд╛рдлреА рдЖрдо рд╣реИрдВред рдЗрд╕реА рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ
рдпрд╣рд╛рдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛
рд╣реИ ред
рдЕрдзрд┐рдХ рдЪреБрдиреМрддреАрдкреВрд░реНрдг рдХрд╛рд░реНрдп
рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдЬрд╣рд╛рдВ рдЪрд╛рд╣реЗрдВ рд╡рд╣рд╛рдВ рдЦрд░рд╛рдм рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЯрд┐рдорд╕ рдСрдирд▓рд╛рдЗрди рдЬрдЬ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдПрдХ
рдХрд╛рд░реНрдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЧрдгрд┐рддреАрдп рд╕реВрддреНрд░реАрдХрд░рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдЕрдВрдХ рдХреЛ рдкреВрд░реНрдг рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдиреНрдпреВрдирддрдо рд╕рдВрдЦреНрдпрд╛ рдЬреНрдЮрд╛рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рд╕рднреА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдЙрддреНрддрд░ рдЬрд╛рдирддреЗ рд╣реИрдВ
kтИТ1 рдХреБрдЫ рд╕рд░рдгреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ
рдб рдФрд░ рд╣рдо рдЦреЛрдЬрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ
dk ред
рдпрд╣ рдирдВрдмрд░ рд▓реЛ
k рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ:
- k рдПрдХ рдкреВрд░реНрдг рд╡рд░реНрдЧ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ dk=1 ред
- рд╢рд╛рдпрдж рдкрд┐рдЫрд▓реА рд╕рдВрдЦреНрдпрд╛ kтИТ1 рдПрдХ рдкреВрд░реНрдг рд╡рд░реНрдЧ рдерд╛ред рддреЛ dk=dkтИТ1+1 ред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкрд┐рдЫрд▓реЗ рдПрдХ рдЗрдХрд╛рдИ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред
рд╣рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ: рд╣рдо рдПрдХ рдЕрдкрдШрдЯрди рдЪрд╛рд╣рддреЗ рд╣реИрдВ
k=q2+s рдРрд╕рд╛ рд╣реИ
dq2+ds<dkтИТ1+1.
рдХреНрдпреЛрдВрдХрд┐
q2 - рдкреВрд░реНрдг рд╡рд░реНрдЧ рддреЛ
dq2=1 , рдФрд░
ds<dkтИТ1,
рдпрд╣ рд╣реИ, рд╣рдо рдПрдХ рд╡рд┐рднрд╛рдЬрди рд╣реИ рдХрд┐ рдмрд╕ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ рдкрд╛рдпрд╛
dkтИТ1+1 , рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрд╡рд╛рдм рд╣реЛрдЧрд╛
dk=ds+dq2=ds+1.
рдирдореВрдирд╛ рдЬрд╛рд╡рд╛ рдХреЛрдб рдЬреЛ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ: for(int k = 1; k <= n; k++) { int best = d[k - 1] + 1;
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд
рд╕рдорд╕реНрдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд▓рдХреНрд╖реНрдп рд╕реЗ рдПрдХ рд╕реАрдврд╝реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реИ
рдПрди рдирд┐рдпрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреНрдпреВрдмреНрд╕:
- рд╕реАрдврд╝реА рдХреЗ рдХрдо рд╕реЗ рдХрдо рджреЛ рдЪрд░рдг рд╣реИрдВ;
- рдПрдХ рд╕реАрдврд╝реА рдореЗрдВ рджреЛ рд╕рдорд╛рди рдЪрд░рдг рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ;
- рд╕реАрдврд╝рд┐рдпреЛрдВ рдХреЗ рдХрджрдо рдЖрд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ (рдпрд╛рдиреА, рдЕрдЧрд▓рд╛ рд╡рд╛рд▓рд╛ рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рд╕реЗ рдмрдбрд╝рд╛ рд╣реИ)ред
рдЗрд╕ рдмрд╛рд░ рд╣рдо рджреНрд╡рд┐-рдЖрдпрд╛рдореА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗред рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВ
рдб рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ
(i,j) рд╕реАрдврд╝рд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдорд┐рд▓рдХрд░
рдореИрдВ рдХреНрдпреВрдмреНрд╕ рдЬрд┐рдирдХреА рдКрдВрдЪрд╛рдИ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ
рдЬ ред рдпрджрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЬрд╡рд╛рдм рдпреЛрдЧ рд╣реЛрдЧрд╛
\ _ \ _ рд╕реАрдорд╛_ {j = 1} ^ n d_ {nj}
рддреЛ, рд╣рдо рд╕реАрдврд╝рд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЦреЛрдЬрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░реЗрдВрдЧреЗ
рдореИрдВ рдХреНрдпреВрдмреНрд╕ рдЬреЛ рд▓рдВрдмреЗ рд╣реЛрддреЗ рд╣реИрдВ
рдЬ ред рддрд╕реНрд╡реАрд░ рд╕реАрдврд╝рд┐рдпреЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЧрд┐рд░ рдЬрд╛рддреЗ рд╣реИрдВ
d74 :

рдЪреВрдВрдХрд┐ рд╣рдо рд╕рднреА рд╕реАрдврд╝рд┐рдпреЛрдВ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдХрдо рдХреНрдпреВрдмреНрд╕ рд╣реЛрддреЗ рд╣реИрдВ, рд╣рдо рд╕реАрдврд╝рд┐рдпреЛрдВ рдХреЛ "рд╡рд┐рднрд╛рдЬрд┐рдд" рдХрд░ рджреЗрдВрдЧреЗ
(i,j) рджрд╛рд╣рд┐рдирд╛ рд╕реНрддрдВрднред рдкрд░рд┐рдгрд╛рдо рдПрдХ рд╕реАрдврд╝реА рд╕реА рд╣реИ
рдЖрдИтИТрдЬреЗ рдХреНрдпреВрдмреНрд╕ред рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг
i=9, j=4 :

рд▓реЗрдХрд┐рди рдРрд╕реА рд╕реАрдврд╝рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рдгрд╛рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреНрдЮрд╛рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдРрд╕реА рд╕рднреА рд╕реАрдврд╝рд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдЪрдХреНрд░ рдХреЗ рд╕рд╛рде рд╕реЙрд░реНрдЯ рдХрд░реЗрдВрдЧреЗ
k рдФрд░ рд╕рднреА рдкрд░рд┐рдгрд╛рдо рдЬреЛрдбрд╝реЗрдВред рдЗрд╕ рддрд░рд╣ рд╕реЗ
dij= sum limitjтИТ1k=1diтИТjjред
рдЕрдм рд╣рдо рд╕реАрдврд╝рд┐рдпреЛрдВ рдХреА рдКрдБрдЪрд╛рдИ рдХреЛ рдЫрд╛рдБрдЯреЗрдВрдЧреЗ:
dij= sum limitjтИТ1k=1diтИТjk, j= overline1,iред$
рдЕрдВрдд рдореЗрдВ, рдмрджрд▓ рд░рд╣рд╛ рд╣реИ
рдореИрдВ рд╕реЗ
1 рдХреЛ
рдПрди рд╣рдореЗрдВ рдЬрд╡рд╛рдм рдорд┐рд▓ рдЧрдпрд╛ред
рдорд╣рддреНрд╡рдкреВрд░реНрдг : рд╣рдорд╛рд░реЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ
dii=1 , рдЕрдиреНрдпрдерд╛ рдЕрдиреНрдпрдерд╛ рд╕реАрдврд╝рд┐рдпреЛрдВ рдХреЗ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ "рдЦреЛ" (рдЬрдм "рд╡рд┐рднрд╛рдЬрд┐рдд") рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд┐рдирд╛ рдХрд╣реЗ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реАрдврд╝реА рд╕рдорд╕реНрдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрддреНрддрд░ рд╕рдВрдЦреНрдпрд╛ рд╣реЛрдЧреА
dnnтИТ1 ред
рдирдореВрдирд╛ рдЬрд╛рд╡рд╛ рдХреЛрдб рдЬреЛ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ: dp = new long[n + 1][n+1]; d[1][1] = 1; d[2][1] = 0; d[2][2] = 1; for(int i = 3; i < n + 1; i++) { for(int j = 2; j <i; j++) { long cnt = 0; for(int k = 1; k < j; k++) { cnt += d[i - j][k]; } d[i][j] = cnt; } d[i][i] = 1;
рдЕрдЧрд▓рд╛
рдХрд╛рд░реНрдп рдПрдХ-рдЖрдпрд╛рдореА рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдкреНрд░рд╡реЗрд╢ 2 рд╢рдмреНрджреЛрдВ рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рднреА рд╢рдмреНрдж рд╕рд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдЦреБрдж рдХреЛ рджреЛ рдГ рдЬрд╛рдирддрд╛ рд╣реИ: рдпреБрд╡рд╛ рдФрд░ рдмреВрдврд╝рд╛ред рдмрджрд▓реЗ рдореЗрдВ, рдпреБрд╡рд╛рдУрдВ рдХреЛ рдХрдИ рд╢рдмреНрджреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рд╛рдпрд╛ рдЬрд╛рддрд╛ рдерд╛ рдЬреИрд╕рд╛ рдХрд┐ рд╡рд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддрд╛ рд╣реИ, рдФрд░ рдкреБрд░рд╛рдиреЗ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╢рдмреНрдж рд╕рд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдХрд┐рддрдиреЗ рдПрдирдЯреАрдПрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ
K рд╢рдмреНрдж (рдЗрди ents modulo рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ
рдкреА )ред
рд╕рдорд╛рдзрд╛рди рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдПрдБ
рдб рдЬрд┐рд╕рдореЗрдВ
рдореИрдВ -рдЗрд╕ рд╕реНрдерд╛рди рдкрд░ рд╣рдо ents (рдореЙрдбреБрд▓реЛ) рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬрдорд╛ рдХрд░реЗрдВрдЧреЗ
рдкреА ) рдЬреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ
рдореИрдВ рд╢рдмреНрджред рдпрд╣ рд╕рдм рдкрд╣рд▓реЗ рдкреНрд░рд╡реЗрд╢ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рджреЛ рд╢рдмреНрджреЛрдВ рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП
d2=1 ред рдФрд░ рдлрд┐рд░ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ:
- рд╕рднреА ents рдЬреЛ рд╡рд┐рд╖рдо рд╕рдВрдЦреНрдпрд╛ рд╡рд╛рд▓реЗ рд╢рдмреНрджреЛрдВ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдкреБрд░рд╛рдиреЗ рд╣реИрдВ рдФрд░ рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рд╕реЗ рд╣реА рд╕реАрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рд╡рд┐рд╖рдо рдХреЗ рд▓рд┐рдП i: di=diтИТ1;
- рдХреЗ рд░реВрдк рдореЗрдВ ents рдХреЗ рд▓рд┐рдП рдЬреЛ рд╢рдмреНрджреЛрдВ рдХреА рдПрдХ рд╕рдорд╛рди рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдпреЗ рд╕рднреА рд╡реЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХрд▓реНрдкрд┐рдд (рдпреБрд╡рд╛) рд╕реЗ рд╕рдорд╛рди рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╢рдмреНрдж рдкреНрд░рд╛рдкреНрдд рд╣реБрдП рд╣реИрдВ + рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдкрд┐рдЫрд▓реЗ (рдкреБрд░рд╛рдиреЗ) рд╕реЗ рд╕реАрдЦрд╛ рд╣реИ; рд╡рд╣ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреЗ рд▓рд┐рдП рдореИрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ di=di backslash2+diтИТ1 ред
рдпрд╣ рдЧрдгрдирд╛ рдореЛрдбреБрд▓реЛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рд╡рд┐рд╢рд╛рд▓ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рддреБрд░рдВрдд рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВрдЧреЗред
рдирдореВрдирд╛ рдЬрд╛рд╡рд╛ рдХреЛрдб рдЬреЛ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ: int[] d = new int[K + 1]; if(K >= 2) d[2] = 1; if(P != 1) { for(int i = 3; i <= K; i++) { if(i % 2 != 0) { d[i] = d[i - 1]; } else { d[i] = ((d[i/2] % P) + d[i - 1] % P) % P; } } } else d[K] = 0;
рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрди:
- рдЯрд╛рдЗрдорд╕ рдСрдирд▓рд╛рдЗрди рдиреНрдпрд╛рдпрд╛рдзреАрд╢;
- рдЧрддрд┐рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ ;
- рддреБрд▓рдирд╛ рдЧреБрдг рдореЛрдбреБрд▓реЛред