Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
16
Добавлен:
10.12.2013
Размер:
27 Кб
Скачать
ѓ« ў  7. ђҐЄгабЁп

7.1. ЏаЁ¬Ґал ४габЁў­ле Їа®Ја ¬¬.

ЏаЁ  ­ «Ё§Ґ ४габЁў­®© Їа®Ја ¬¬л ў®§­ЁЄ Ґв, Є Є ®Ўлз­®, ¤ў 
ў®Їа®б :

( ) Ї®зҐ¬г Їа®Ја ¬¬  § Є ­зЁў Ґв а Ў®вг?
(Ў) Ї®зҐ¬г ®­  а Ў®в Ґв Їа ўЁ«м­®, Ґб«Ё § Є ­зЁў Ґв
а Ў®вг?

„«п (Ў) ¤®бв в®з­® Їа®ўҐаЁвм, зв® (ᮤҐа¦ й п ४габЁў­л©
ўл§®ў) Їа®Ја ¬¬  а Ў®в Ґв Їа ўЁ«м­®, ЇаҐ¤Ї®«®¦Ёў, зв® ўл§лў Ґ¬ п
Ґо ®¤­®Ё¬Ґ­­ п Їа®Ја ¬¬  а Ў®в Ґв Їа ўЁ«м­®. ‚ б ¬®¬ ¤Ґ«Ґ, ў
н⮬ б«гз Ґ ў 楯®зЄҐ ४габЁў­® ўл§лў Ґ¬ле Їа®Ја ¬¬ ўбҐ Їа®Ј-
а ¬¬л а Ў®в ов Їа ўЁ«м­® (гЎҐ¦¤ Ґ¬бп ў н⮬, Ё¤п ®в Є®­ж  楯®з-
ЄЁ Є ­ з «г).
—в®Ўл ¤®Є § вм ( ), ®Ўлз­® Їа®ўҐапов, зв® б Є ¦¤л¬ ४га-
бЁў­л¬ ўл§®ў®¬ §­ зҐ­ЁҐ Є Є®Ј®-в® Ї а ¬Ґва  г¬Ґ­ми Ґвбп, Ё нв®
­Ґ ¬®¦Ґв Їа®¤®«¦ вмбп ЎҐбЄ®­Ґз­®.

7.1.1. Ќ ЇЁб вм ४габЁў­го Їа®жҐ¤гаг ўлзЁб«Ґ­Ёп д Єв®аЁ « 
楫®Ј® Ї®«®¦ЁвҐ«м­®Ј® зЁб«  n (в.Ґ. Їа®Ё§ўҐ¤Ґ­Ёп зЁбҐ« 1..n,
®Ў®§­ з Ґ¬®Ј® n!).

ђҐиҐ­ЁҐ. €бЇ®«м§гҐ¬ а ўҐ­бвў  1!=1, n!= (n-1)!*n.

procedure factorial (n: integer; var fact: integer);
| {Ї®«®¦Ёвм fact а ў­л¬ д Єв®аЁ «г зЁб«  y}
begin
| if n=1 then begin
| | fact:=1;
| end else begin {n>1}
| | factorial (n-1, fact);
| | fact:= fact*n;
| end;
end;

‘ ЁбЇ®«м§®ў ­ЁҐ¬ Їа®жҐ¤га-дг­ЄжЁ© ¬®¦­® ­ ЇЁб вм в Є:

function factorial (n: integer): integer;
begin
| if n=1 then begin
| | factorial:=1;
| end else begin {n>1}
| | factorial:= factorial (n-1)*n;
| end;
end;

ЋЎа вЁвҐ ў­Ё¬ ­ЁҐ ­  ­ҐЄ®в®аго ¤ў®©б⢥­­®бвм ЁбЇ®«м§®ў ­Ёп Ё¬Ґ-
­Ё factorial ў­гваЁ ®ЇЁб ­Ёп дг­ЄжЁЁ: ®­® ®Ў®§­ з Ґв Є Є ЇҐаҐ-
¬Ґ­­го, в Є Ё ўл§лў Ґ¬го ४габЁў­® дг­ЄжЁо. Љ бз бвмо, ў ­ иҐ¬
б«гз Ґ ®­Ё а §«Ёз овбп Ї® бЄ®ЎЄ ¬ Ї®б«Ґ Ё¬Ґ­Ё, ­® Ґб«Ё Ўл
дг­ЄжЁп Ўл«  ЎҐ§ Ї а ¬Ґва®ў, в® ¤Ґ«® Ўл«® Ўл Ї«®е®. (‘в ­-
¤ ав­ п, ­® ваг¤­® ­ е®¤Ё¬ п ®иЁЎЄ  ў®§­ЁЄ Ґв, Ґб«Ё  ўв®а Ї®« -
Ј Ґв, зв® ®­ ЁбЇ®«м§гҐв §­ зҐ­ЁҐ ЇҐаҐ¬Ґ­­®©,   Є®¬ЇЁ«пв®а ў н⮬
¬Ґб⥠ўЁ¤Ёв ४габЁў­л© ўл§®ў.)

7.1.2. ЋЎлз­® д Єв®аЁ « ®ЇаҐ¤Ґ«пов Ё ¤«п ­г«п, бзЁв п, зв®
0!=1. €§¬Ґ­ЁвҐ Їа®Ја ¬¬л ᮮ⢥вб⢥­­®.

7.1.3. Ќ ЇЁиЁвҐ ४габЁў­го Їа®Ја ¬¬г ў®§ўҐ¤Ґ­Ёп ў 楫го ­Ґ-
®ваЁж вҐ«м­го б⥯Ґ­м.

7.1.4. ’® ¦Ґ, Ґб«Ё вॡгҐвбп, зв®Ўл Ј«гЎЁ­  ४габЁЁ ­Ґ ЇаҐ-
ў®б室Ё«  C*log n, Ј¤Ґ n - б⥯Ґ­м.

ђҐиҐ­ЁҐ.

function power (a,n: integer): integer;
begin
| if n = 0 then begin
| | power:= 1;
| end else if n mod 2 = 0 then begin
| | power:= power(a*2, n div 2);
| end else begin
| | power:= power(a, n-1)*a;
| end;
end;

7.1.5. —в® Ўг¤Ґв, Ґб«Ё Ё§¬Ґ­Ёвм Їа®Ја ¬¬г, ЇаЁўҐ¤Ґ­­го ў
аҐиҐ­ЁЁ ЇаҐ¤л¤г饩 § ¤ зЁ, § ¬Ґ­Ёў бва®Єг

power:= power(a*2, n div 2)
­ 
power:= power(a, n div 2)* power(a, n div 2)?

ђҐиҐ­ЁҐ. Џа®Ја ¬¬  ®бв ­Ґвбп Їа ўЁ«м­®©. Ћ¤­ Є® ®­  бв ­Ґв
а Ў®в вм ¬Ґ¤«Ґ­­ҐҐ. „Ґ«® ў ⮬, з⮠⥯Ґам ўл§®ў ¬®¦Ґв Ї®а®¤Ёвм
¤ў  ўл§®ў  (е®вп Ё ®¤Ё­ Є®ўле) ў¬Ґбв® ®¤­®Ј® - Ё зЁб«® ўл§®ў®ў
Ўлбва® а бвҐв б Ј«гЎЁ­®© ४габЁЁ. Џа®Ја ¬¬  Ї®-ЇаҐ¦­Ґ¬г Ё¬ҐҐв
«®Ј аЁд¬ЁзҐбЄго Ј«гЎЁ­г ४габЁЁ, ­® зЁб«® и Ј®ў а Ў®вл бв ­®-
ўЁвбп «Ё­Ґ©­л¬ ў¬Ґбв® «®Ј аЁд¬ЁзҐбЄ®Ј®.
ќв®в ­Ґ¤®бв в®Є ¬®¦­® гбва ­Ёвм, ­ ЇЁб ў
t:= power(a, n div 2);
power:= t*t;
Ё«Ё ў®бЇ®«м§®ў ўиЁбм дг­ЄжЁҐ© ў®§ўҐ¤Ґ­Ёп ў Єў ¤а в (sqr).

7.1.6. €бЇ®«м§гп «Ёим Є®¬ ­¤л write(x) ЇаЁ x=0..9, ­ ЇЁб вм
४габЁў­го Їа®Ја ¬¬г ЇҐз вЁ ¤ҐбпвЁз­®© § ЇЁбЁ 楫®Ј® Ї®«®¦Ё-
⥫쭮Ј® зЁб«  n.

ђҐиҐ­ЁҐ. ‡¤Ґбм ЁбЇ®«м§®ў ­ЁҐ ४габЁЁ ®Ў«ҐЈз Ґв ¦Ё§­м
(Їа®Ў«Ґ¬  Ўл«  ў ⮬, зв® жЁдал «ҐЈзҐ Ї®«гз вм б Є®­ж ,   ЇҐз -
в вм ­ ¤® б ­ з « ).

procedure print (n:integer); {n>0}
begin
| if n<10 then begin
| | write (n);
| end else begin
| | print (n div 10);
| | write (n mod 10);
| end;
end;

7.1.7. €Ја  "• ­®©бЄЁҐ Ў и­Ё" б®бв®Ёв ў б«Ґ¤го饬. …бвм ваЁ
бвҐа¦­п. Ќ  ЇҐаўл© Ё§ ­Ёе ­ ¤Ґв  ЇЁа ¬Ё¤Є  Ё§ n Є®«Ґж (Ў®«миЁҐ
Є®«мж  б­Ё§г, ¬Ґ­миЁҐ ᢥаег). ’ॡгҐвбп ЇҐаҐ¬ҐбвЁвм Є®«мж  ­ 
¤агЈ®© бвҐа¦Ґ­м. ђ §аҐи Ґвбп ЇҐаҐЄ« ¤лў вм Є®«мж  б® бвҐа¦­п ­ 
бвҐа¦Ґ­м, ­® Є« бвм Ў®«м襥 Є®«мж® Ї®ўҐае ¬Ґ­м襣® ­Ґ«м§п. ‘®б-
в ўЁвм Їа®Ја ¬¬г, гЄ §лў ойго ваҐЎгҐ¬лҐ ¤Ґ©бвўЁп.

ђҐиҐ­ЁҐ. Ќ ЇЁиҐ¬ ४габЁў­го Їа®жҐ¤гаг ЇҐаҐ¬ҐйҐ­Ёп i
ўҐае­Ёе Є®«Ґж б m-Ј® бвҐа¦­п ­  n-л© (ЇаҐ¤Ї®« Ј Ґвбп, зв® ®б-
в «м­лҐ Є®«мж  Ў®«миҐ Ї® а §¬Ґаг Ё «Ґ¦ в ­  бвҐа¦­пе ЎҐ§ ¤ўЁ¦Ґ-
­Ёп).

procedure move(i,m,n: integer);
| var s: integer;
begin
| if i = 1 then begin
| | writeln ('ᤥ« вм 室', m, '->', n);
| end else begin
| | s:=6-m-n; {s - ваҐвЁ© бвҐа¦Ґ­м: б㬬  ­®¬Ґа®ў а ў­  6}
| | move (i-1, m, s);
| | writeln ('ᤥ« вм 室', m, '->', n);
| | move (i-1, s, n);
| end;
end;

(‘­ з «  ЇҐаҐ­®бЁвбп ЇЁа ¬Ё¤Є  Ё§ i-1 Є®«Ґж ­  ваҐвмо Ї «®зЄг.
Џ®б«Ґ нв®Ј® i-®Ґ Є®«мж® ®бў®Ў®¦¤ Ґвбп, Ё ҐЈ® ¬®¦­® ЇҐаҐ­ҐбвЁ Єг-
¤  б«Ґ¤гҐв. Ћбв Ґвбп Ї®«®¦Ёвм ­  ­ҐЈ® ЇЁа ¬Ё¤Єг.)

7.2. ђҐЄгабЁў­ п ®Ўа Ў®вЄ  ¤ҐаҐўмҐў

„ў®Ёз­л¬ ¤ҐаҐў®¬ ­ §лў Ґвбп Є авЁ­Є  ўа®¤Ґ

o
\
o o
\ /
o o
\ /
o

ЌЁ¦­пп ўҐаиЁ­  ­ §лў Ґвбп Є®а­Ґ¬. €§ Є ¦¤®© ўҐаиЁ­л ¬®Јгв Ё¤вЁ
¤ўҐ «Ё­ЁЁ: ў«Ґў® ўўҐае Ё ўЇа ў® ўўҐае. ‚ҐаиЁ­л, Єг¤  ®­Ё ўҐ¤гв,
­ §лў овбп «Ґўл¬ Ё Їа ўл¬ бл­®ўмп¬Ё Ёб室­®© ўҐаиЁ­л. ‚ҐаиЁ­ 
¬®¦Ґв Ё¬Ґвм ¤ўге бл­®ўҐ©,   ¬®¦Ґв Ё¬Ґвм в®«мЄ® ®¤­®Ј® бл­  («Ґ-
ў®Ј® Ё«Ё Їа ў®Ј®). Ћ­  ¬®¦Ґв Ё ў®ўбҐ ­Ґ Ё¬Ґвм бл­®ўҐ©, Ё ў н⮬
б«гз Ґ ­ §лў Ґвбп «Ёб⮬.
Џгбвм x - Є Є п-в® ўҐаиЁ­  ¤ў®Ёз­®Ј® ¤ҐаҐў . Ћ­  б ¬  ў¬Ґб-
⥠б бл­®ўмп¬Ё, ў­гЄ ¬Ё, Їа ў­гЄ ¬Ё Ё в.¤. ®Ўа §гҐв Ї®¤¤ҐаҐў® б
Є®а­Ґ¬ ў x - "Ї®¤¤ҐаҐў® Ї®в®¬Є®ў x".

‚ б«Ґ¤гойЁе § ¤ з е ¬л ЇаҐ¤Ї®« Ј Ґ¬, зв® ўҐаиЁ­л ¤ҐаҐў 
Їа®­г¬Ґа®ў ­л 楫묨 Ї®«®¦ЁвҐ«м­л¬Ё зЁб« ¬Ё, ЇаЁзҐ¬ ­®¬Ґа  ўбҐе
ўҐаиЁ­ а §«Ёз­л. Њл бзЁв Ґ¬, зв® ­®¬Ґа Є®а­п еа ­Ёвбп ў ЇҐаҐ¬Ґ­-
­®© root. Њл бзЁв Ґ¬, зв® Ё¬Ґовбп ¤ў  ¬ ббЁў 

l,r: array [1..N] of integer

Ё «Ґўл© Ё Їа ўл© бл­ ўҐаиЁ­л б ­®¬Ґа®¬ i Ё¬Ґов ᮮ⢥вб⢥­­®
­®¬Ґа  l[i] Ё r[i]. …б«Ё ўҐаиЁ­  б ­®¬Ґа®¬ i ­Ґ Ё¬ҐҐв «Ґў®Ј®
(Ё«Ё Їа ў®Ј®) бл­ , в® l[i] (ᮮ⢥вб⢥­­® r[i]) а ў­® 0. (Џ®
ва ¤ЁжЁЁ ЇаЁ § ЇЁбЁ Їа®Ја ¬¬ ¬л ЁбЇ®«м§гҐ¬ ў¬Ґбв® ­г«п Є®­бв ­вг
nil, а ў­го ­г«о.)

‡¤Ґбм N - ¤®бв в®з­® Ў®«м讥 ­ вга «м­®Ґ зЁб«® (­®¬Ґа  ўбҐе
ўҐаиЁ­ ­Ґ ЇаҐў®б室пв N). Ћв¬ҐвЁ¬, зв® ­®¬Ґа ўҐаиЁ­л ­ЁЄ Є ­Ґ
бўп§ ­ б ҐҐ Ї®«®¦Ґ­ЁҐ¬ ў ¤ҐаҐўҐ Ё зв® ­Ґ ўбҐ зЁб«  ®в 1 ¤® N
®Ўп§ ­л Ўлвм ­®¬Ґа ¬Ё ўҐаиЁ­ (Ё, б«Ґ¤®ў вҐ«м­®, з бвм ¤ ­­ле ў
¬ ббЁў е l Ё r - нв® ¬гб®а).

7.2.1. Џгбвм N=7, root=3, ¬ ббЁўл l Ё r в Є®ўл:

i | 1 2 3 4 5 6 7
l[i] | 0 0 1 0 6 0 7
r[i] | 0 0 5 3 2 0 7

Ќ аЁб®ў вм ᮮ⢥вбвўго饥 ¤ҐаҐў®.

ЋвўҐв: 6 2
\ /
1 5
\ /
3

7.2.2. Ќ ЇЁб вм Їа®Ја ¬¬г Ї®¤бзҐв  зЁб«  ўҐаиЁ­ ў ¤ҐаҐўҐ.

ђҐиҐ­ЁҐ. ђ бᬮваЁ¬ дг­ЄжЁо n(x), а ў­го зЁб«г ўҐаиЁ­ ў
Ї®¤¤ҐаҐўҐ б Є®а­Ґ¬ ў ўҐаиЁ­Ґ ­®¬Ґа x. ‘зЁв Ґ¬, зв® n(nil)=0 (Ї®-
« Ј п ᮮ⢥вбвўго饥 Ї®¤¤ҐаҐў® Їгбвл¬), Ё ­Ґ § Ў®вЁ¬бп ® §­ зҐ-
­Ёпе nil(s) ¤«п зЁбҐ« s, ­Ґ пў«пойЁебп ­®¬Ґа ¬Ё ўҐаиЁ­. ђҐЄга-
бЁў­ п Їа®Ја ¬¬  ¤«п s в Є®ў :

function n (x:integer):integer;
begin
| if x = nil then begin
| | n:= 0;
| end else begin
| | n:= n(l[x]) + n(r[x]) + 1;
| end;
end;

(—Ёб«® ўҐаиЁ­ ў Ї®¤¤ҐаҐўҐ ­ ¤ ўҐаиЁ­®© x а ў­® б㬬Ґ зЁбҐ« ўҐа-
иЁ­ ­ ¤ ҐҐ бл­®ўмп¬Ё Ї«об ®­  б ¬ .) ѓ«гЎЁ­  ४габЁЁ Є®­Ґз­ ,
в Є Є Є б Є ¦¤л¬ и Ј®¬ ўлб®в  ᮮ⢥вбвўго饣® Ї®¤¤ҐаҐў 
㬥­ми Ґвбп.

7.2.3. Ќ ЇЁб вм Їа®Ја ¬¬г Ї®¤бзҐв  зЁб«  «Ёбв쥢 ў ¤ҐаҐўҐ.

ЋвўҐв.

function n (x:integer):integer;
begin
| if x = nil then begin
| | n:= 0;
| end else if (l[x]=nil) and (r[x]=nil) then begin {«Ёбв}
| | n:= 1;
| end;
| end else begin
| | n:= n(l[x]) + n(r[x]);
| end;
end;

7.2.4. Ќ ЇЁб вм Їа®Ја ¬¬г Ї®¤бзҐв  ўлб®вл ¤ҐаҐў  (Є®аҐ­м
Ё¬ҐҐв ўлб®вг 0, ҐЈ® бл­®ўмп - ўлб®вг 1, ў­гЄЁ - 2 Ё в.Ї.; ўлб®в 
¤ҐаҐў  - нв® ¬ ЄбЁ¬г¬ ўлб®в ҐЈ® ўҐаиЁ­).

“Є § ­ЁҐ. ђҐЄгабЁў­® ®ЇаҐ¤Ґ«пҐвбп дг­ЄжЁп f(x) = ўлб®в 
Ї®¤¤ҐаҐў  б Є®а­Ґ¬ ў x.

7.2.5. Ќ ЇЁб вм Їа®Ја ¬¬г, Є®в®а п Ї® § ¤ ­­®¬г n бзЁв Ґв
зЁб«® ўбҐе ўҐаиЁ­ ўлб®вл n (ў § ¤ ­­®¬ ¤ҐаҐўҐ).

‚¬Ґбв® Ї®¤бзҐв  Є®«ЁзҐбвў  ўҐаиЁ­ в®Ј® Ё«Ё Ё­®Ј® த  ¬®¦­®
Їа®бЁвм ­ ЇҐз в вм бЇЁб®Є нвЁе ўҐаиЁ­ (ў ⮬ Ё«Ё Ё­®¬ Ї®ап¤ЄҐ).

7.2.6. Ќ ЇЁб вм Їа®Ја ¬¬г, Є®в®а п ЇҐз в Ґв (Ї® ®¤­®¬г а -
§г) ўбҐ ўҐаиЁ­л ¤ҐаҐў .

ђҐиҐ­ЁҐ. Џа®жҐ¤га  print_subtree(x) ЇҐз в Ґв ўбҐ ўҐаиЁ­л
Ї®¤¤ҐаҐў  б Є®а­Ґ¬ ў x Ї® ®¤­®¬г а §г; Ј« ў­ п Їа®Ја ¬¬  ᮤҐа-
¦Ёв ўл§®ў print_subtree(root).

procedure print_subtree (x:integer);
begin
| if x = nil then begin
| | {­ЁзҐЈ® ­Ґ ¤Ґ« вм}
| end else begin
| | writeln (x);
| | print_subtree (l[x]);
| | print_subtree (r[x]);
| end;
end;

„ ­­ п Їа®Ја ¬¬  ЇҐз в Ґв б­ з «  Є®аҐ­м Ї®¤¤ҐаҐў , § вҐ¬ Ї®¤¤Ґ-
ॢ® ­ ¤ «Ґўл¬ бл­®¬,   § вҐ¬ ­ ¤ Їа ўл¬. ’аЁ бва®ЄЁ ў else-з б-
вЁ ¬®Јгв Ўлвм ЇҐаҐбв ў«Ґ­л 6 бЇ®б®Ў ¬Ё, Ё Є ¦¤л© Ё§ нвЁе бЇ®б®-
Ў®ў ¤ Ґв бў®© Ї®а冷Є ЇҐз вЁ ўҐаиЁ­.

7.3. Џ®а®¦¤Ґ­ЁҐ Є®¬ЎЁ­ в®а­ле ®ЎкҐЄв®ў, ЇҐаҐЎ®а

ђҐЄгабЁў­лҐ Їа®Ја ¬¬л пў«повбп 㤮Ў­л¬ бЇ®б®Ў®¬ Ї®а®¦¤Ґ­Ёп
Є®¬ЎЁ­ в®а­ле ®ЎкҐЄв®ў § ¤ ­­®Ј® ўЁ¤ . Њл аҐиЁ¬ § ­®ў® ­ҐбЄ®«мЄ®
§ ¤ з б®®вўвҐвбўго饩 Ј« ўл.

7.3.1. Ќ ЇЁб вм Їа®Ја ¬¬г, Є®в®а п ЇҐз в Ґв Ї® ®¤­®¬г а §г
ўбҐ Ї®б«Ґ¤®ў вҐ«м­®бвЁ ¤«Ё­л n, б®бв ў«Ґ­­лҐ Ё§ зЁбҐ« 1..k (Ёе
Є®«ЁзҐбвў® а ў­® k ў б⥯Ґ­Ё n).

ђҐиҐ­ЁҐ. Џа®Ја ¬¬  Ўг¤Ґв ®ЇҐаЁа®ў вм б ¬ ббЁў®¬ a[1]..a[n]
Ё зЁб«®¬ t. ђҐЄгабЁў­ п Їа®жҐ¤га  generate ЇҐз в Ґв ўбҐ Ї®б«Ґ¤®-
ў вҐ«м­®бвЁ, ­ зЁ­ ойЁҐбп ­  a[1]..a[t]; Ї®б«Ґ ҐҐ ®Є®­з ­Ёп t
Ё¬ҐҐв в® ¦Ґ §­ зҐ­ЁҐ, зв® Ё ў ­ з «Ґ:

procedure generate;
| var i,j : integer;
begin
| if t = n then begin
| | for i:=1 to n do begin
| | | write(a[i]);
| | end;
| | writeln;
| end else begin {t < n}
| | for j:=1 to k do begin
| | | t:=t+1;
| | | a[t]:=j;
| | | generate;
| | | t:=t-1;
| | end;
| end;
end;

Ћб­®ў­ п Їа®Ја ¬¬  ⥯Ґам б®бв®Ёв Ё§ ¤ўге ®ЇҐа в®а®ў:
t:=0; generate;

7.3.2. Ќ ЇЁб вм Їа®Ја ¬¬г, Є®в®а п ЇҐз в «  Ўл ўбҐ ЇҐаҐбв -
­®ўЄЁ зЁбҐ« 1..n Ї® ®¤­®¬г а §г.

ђҐиҐ­ЁҐ. Џа®Ја ¬¬  ®ЇҐаЁагҐв б ¬ ббЁў®¬ a[1]..a[n], ў Є®в®-
஬ еа ­Ёвбп ЇҐаҐбв ­®ўЄ  зЁбҐ« 1..n. ђҐЄгабЁў­ п Їа®жҐ¤га 
generate ў в Є®© бЁвг жЁЁ ЇҐз в Ґв ўбҐ ЇҐаҐбв ­®ўЄЁ, Є®в®алҐ ­ 
ЇҐаўле t Ї®§ЁжЁпе б®ўЇ ¤ ов б ЇҐаҐбв ­®ўЄ®© a; Ї® ўл室Ґ Ё§ ­ҐҐ
ЇҐаҐ¬Ґ­­лҐ t Ё a Ё¬Ґов ⥠¦Ґ §­ зҐ­Ёп, зв® Ё ¤® ўе®¤ . Ћб­®ў­ п
Їа®Ја ¬¬  в Є®ў :

for i:=1 to n do begin a[i]:=i; end;
t:=0;
generate;

ў®в ®ЇЁб ­ЁҐ Їа®жҐ¤гал:

procedure generate;
| var i,j : integer;
begin
| if t = n then begin
| | for i:=1 to n do begin
| | | write(a[i]);
| | end;
| | writeln;
| end else begin {t < n}
| | for j:=t+1 to n do begin
| | | Ї®¬Ґ­пвм ¬Ґбв ¬Ё a[t+1] Ё a[j]
| | | t:=t+1;
| | | generate;
| | | t:=t-1;
| | | Ї®¬Ґ­пвм ¬Ґбв ¬Ё a[t+1] Ё a[j]
| | end;
| end;
end;

7.3.3. Ќ ЇҐз в вм ўбҐ ў®§а бв ойЁҐ Ї®б«Ґ¤®ў вҐ«м­®бвЁ ¤«Ё­л
k, н«Ґ¬Ґ­в ¬Ё Є®в®але пў«повбп ­ вга «м­лҐ зЁб«  ®в 1 ¤® n.
(ЏаҐ¤Ї®« Ј Ґвбп, зв® k ­Ґ ЇаҐў®б室Ёв n - Ё­ зҐ в ЄЁе Ї®б«Ґ¤®ў -
⥫쭮б⥩ ­Ґ бгйҐбвўгҐв.)

ђҐиҐ­ЁҐ. Џа®Ја ¬¬  ®ЇҐаЁагҐв б ¬ ббЁў®¬ a[1]..a[k] Ё 楫®©
ЇҐаҐ¬Ґ­­®© t. ЏаҐ¤Ї®« Ј п, зв® a[1]..a[t] - ў®§а бв ой п Ї®б«Ґ-
¤®ў вҐ«м­®бвм зЁбҐ« ­ вга «м­ле зЁбҐ« Ё§ ®в१Є  1..n, ४габЁў-
­® ®ЇаҐ¤Ґ«Ґ­­ п Їа®жҐ¤га  generate ЇҐз в Ґв ўбҐ ҐҐ ў®§а бв ойЁҐ
Їа®¤®«¦Ґ­Ёп ¤«Ё­л k.

procedure generate;
| var i: integer;
begin
| if t = k then begin
| | ЇҐз в вм a[1]..a[k]
| end else begin
| | t:=t+1;
| | for i:=a[t-1]+1 to t-k+n do begin
| | | a[t]:=i;
| | | generate;
| | end;
| | t:=t-1;
| end;
end;

‡ ¬Ґз ­ЁҐ. –ЁЄ« for ¬®Ј Ўл Ё¬Ґвм ўҐае­Ґ© Ја ­ЁжҐ© n (ў¬Ґбв®
t-k+n). Ќ и ў аЁ ­в нЄ®­®¬Ёв з бвм а Ў®вл, гзЁвлў п в®в д Єв,
зв® ЇаҐ¤Ї®б«Ґ¤­Ё© (k-1-л©) з«Ґ­ ­Ґ ¬®¦Ґв ЇаҐў®б室Ёвм n-1,
k-2-®© з«Ґ­ ­Ґ ¬®¦Ґв ЇаҐў®б室Ёвм n-2 Ё в.Ї.
Ћб­®ў­ п Їа®Ја ¬¬  ⥯Ґам ўлЈ«п¤Ёв в Є:

t:=1;
for j:=1 to 1-k+n do begin
| a[1]:=j;
| generate;
end;

Њ®¦­® Ўл«® Ўл ¤®Ў ўЁвм Є ¬ ббЁўг a б«Ґў  ҐйҐ Ё a[0]=0, Ї®«®¦Ёвм
t=0 Ё ®Ја ­ЁзЁвмбп Ґ¤Ё­б⢥­­л¬ ўл§®ў®¬ Їа®жҐ¤гал generate.

7.3.4. ЏҐаҐзЁб«Ёвм ўбҐ ЇаҐ¤бв ў«Ґ­Ёп Ї®«®¦ЁвҐ«м­®Ј® 楫®Ј®
зЁб«  n ў ўЁ¤Ґ бг¬¬л Ї®б«Ґ¤®ў вҐ«м­®бвЁ ­Ґў®§а бв ойЁе 楫ле Ї®-
«®¦ЁвҐ«м­ле б« Ј Ґ¬ле.

ђҐиҐ­ЁҐ. Џа®Ја ¬¬  ®ЇҐаЁагҐв б ¬ ббЁў®¬ a[1..n] (¬ ЄбЁ-
¬ «м­®Ґ зЁб«® б« Ј Ґ¬ле а ў­® n) Ё б 楫®© ЇҐаҐ¬Ґ­­®© t. ЏаҐ¤Ї®-
« Ј п, зв® a[1],...,a[t] - ­Ґў®§а бв ой п Ї®б«Ґ¤®ў вҐ«м­®бвм жҐ-
«ле зЁбҐ«, б㬬  Є®в®але ­Ґ ЇаҐў®б室Ёв n, Їа®жҐ¤га  generate
ЇҐз в Ґв ўбҐ ЇаҐ¤бв ў«Ґ­Ёп вॡ㥬®Ј® ўЁ¤ , Їа®¤®«¦ ойЁҐ нвг
Ї®б«Ґ¤®ў вҐ«м­®бвм. „«п нЄ®­®¬ЁЁ ўлзЁб«Ґ­Ё© б㬬  a[1]+...+a[t]
еа ­Ёвбп ў бЇҐжЁ «м­®© ЇҐаҐ¬Ґ­­®© s.

procedure generate;
| var i: integer;
begin
| if s = n then begin
| | ЇҐз в вм Ї®б«Ґ¤®ў вҐ«м­®бвм a[1]..a[t]
| end else begin
| | for i:=1 to min(a[t], n-s) do begin
| | | t:=t+1;
| | | a[t]:=i;
| | | s:=s+i;
| | | generate;
| | | s:=s-i;
| | | t:=t-1;
| | end;
| end;
end;

Ћб­®ў­ п Їа®Ја ¬¬  ЇаЁ н⮬ ¬®¦Ґв Ўлвм в Є®©:

t:=1;
for j:=1 to n do begin
| a[1]:=j
| s:=j;
| generate;
end;

‡ ¬Ґз ­ЁҐ. Њ®¦­® ­Ґ¬­®Ј® бнЄ®­¬Ёвм, ўл­Ґбп ®ЇҐа жЁЁ 㢥«Ё-
祭Ёп Ё 㬥­м襭Ёп t Ё§ жЁЄ« ,   в Є¦Ґ ­Ґ ў®§ўа й п s Є ¦¤л© а §
Є Ёб室­®¬г §­ зҐ­Ёо (  㢥«ЁзЁў п ҐЈ® ­  1 Ё ў®§ўа й п Є Ёб室-
­®¬г §­ зҐ­Ёо ў Є®­жҐ). Ља®¬Ґ в®Ј®, ¤®Ў ўЁў дЁЄвЁў­л© н«Ґ¬Ґ­в
a[0]=n, ¬®¦­® гЇа®бвЁвм ®б­®ў­го Їа®Ја ¬¬г:

t:=0; s:=0; a[0]:=n; generate;

7.3.5. Ќ ЇЁб вм ४габЁў­го Їа®Ја ¬¬г ®Ўе®¤  ¤ҐаҐў  (Ёб-
Ї®«м§гп ⥠¦Ґ Є®¬ ­¤л Ё Їа®ўҐаЄЁ, зв® Ё ў Ј« ўҐ Їа® ®Ўе®¤ ¤ҐаҐ-
ў ).

ђҐиҐ­ЁҐ. Џа®жҐ¤га  ®Ўа Ў®в вм_­ ¤ ®Ўа Ў влў Ґв ўбҐ «Ёбвмп
­ ¤ ⥪г饩 ўҐаиЁ­®© Ё § Є ­зЁў Ґв а Ў®вг ў в®© ¦Ґ ўҐаиЁ­Ґ, зв®
Ё ­ з « . ‚®в ҐҐ ४габЁў­®Ґ ®ЇЁб ­ЁҐ:

procedure ®Ўа Ў®в вм_­ ¤;
begin
| if Ґбвм_ᢥаег then begin
| | ўўҐае_­ «Ґў®;
| | ®Ўа Ў®в вм_­ ¤;
| | while Ґбвм_бЇа ў  do begin
| | | ўЇа ў®;
| | | ®Ўа Ў®в вм_­ ¤;
| | end;
| | ў­Ё§;
| end else begin
| | ®Ўа Ў®в вм;
| end;
end;

7.4. „агЈЁҐ ЇаЁ¬Ґ­Ґ­Ёп ४габЁЁ

’®Ї®«®ЈЁзҐбЄ п б®авЁа®ўЄ . ЏаҐ¤бв ўЁ¬ ᥡҐ n зЁ­®ў­ЁЄ®ў,
Є ¦¤л© Ё§ Є®в®але ўл¤ Ґв бЇа ўЄЁ ®ЇаҐ¤Ґ«Ґ­­®Ј® ўЁ¤ . Њл е®вЁ¬
Ї®«гзЁвм ўбҐ нвЁ бЇа ўЄЁ, б®Ў«о¤ п ®Ја ­ЁзҐ­Ёп, гбв ­®ў«Ґ­­лҐ
зЁ­®ў­ЁЄ ¬Ё. ЋЈа ­ЁзҐ­Ёп б®бв®пв ў ⮬, зв® г Є ¦¤®Ј® зЁ­®ў­ЁЄ 
Ґбвм бЇЁб®Є бЇа ў®Є, Є®в®алҐ ­г¦­® б®Ўа вм ЇҐаҐ¤ ®Ўа йҐ­ЁҐ¬ Є
­Ґ¬г. „Ґ«® ЎҐ§­ ¤Ґ¦­®, Ґб«Ё б奬  § ўЁбЁ¬®б⥩ Ё¬ҐҐв жЁЄ«
(бЇа ўЄг A ­Ґ«м§п Ї®«гзЁвм ЎҐ§ B, B ЎҐ§ C,..., Y ЎҐ§ Z Ё Z ЎҐ§
A). ЏаҐ¤Ї®« Ј п, зв® в Є®Ј® жЁЄ«  ­Ґв, вॡгҐвбп б®бв ўЁвм Ї« ­,
гЄ §лў ойЁ© ®¤Ё­ Ё§ ў®§¬®¦­ле Ї®ап¤Є®ў Ї®«г祭Ёп бЇа ў®Є.

€§®Ўа ¦ п зЁ­®ў­ЁЄ®ў в®зЄ ¬Ё,   § ўЁбЁ¬®бвЁ - бв५Є ¬Ё,
ЇаЁе®¤Ё¬ Є в Є®© д®а¬г«Ёа®ўЄҐ. €¬ҐҐвбп n в®зҐЄ, Їа®­г¬Ґа®ў ­­ле
®в 1 ¤® n. €§ Є ¦¤®© в®зЄЁ ўҐ¤Ґв ­ҐбЄ®«мЄ® (ў®§¬®¦­®, 0) бв५®Є
ў ¤агЈЁҐ в®зЄЁ. (’ Є п Є авЁ­Є  ­ §лў Ґвбп ®аЁҐ­вЁа®ў ­­л¬ Ја -
䮬.) –ЁЄ«®ў ­Ґв. ’ॡгҐвбп а бЇ®«®¦Ёвм ўҐаиЁ­л Ја д  (в®зЄЁ) ў
в Є®¬ Ї®ап¤ЄҐ, зв®Ўл Є®­Ґж «оЎ®© бв५ЄЁ ЇаҐ¤иҐбвў®ў « ҐҐ ­ з -
«г. ќв  § ¤ з  ­ §лў Ґвбп в®Ї®«®ЈЁзҐбЄ®© б®авЁа®ўЄ®©.

7.4.1. „®Є § вм, зв® нв® ўбҐЈ¤  ў®§¬®¦­®.

ђҐиҐ­ЁҐ. €§ гб«®ўЁп ®вбгвбвўЁп жЁЄ«®ў ўл⥪ Ґв, зв® Ґбвм
ўҐаиЁ­ , Ё§ Є®в®а®© ў®®ЎйҐ ­Ґ ўл室Ёв бв५®Є (Ё­ зҐ ¬®¦­® ¤ўЁ-
Ј вмбп Ї® бв५Є ¬, Ї®Є  ­Ґ § жЁЄ«Ё¬бп). …Ґ Ўг¤Ґ¬ бзЁв вм ЇҐа-
ў®©. ‚лЄЁ¤лў п ўбҐ бв५ЄЁ, ў ­ҐҐ ўҐ¤гйЁҐ, ¬л бў®¤Ё¬ § ¤ зг Є
Ја дг б ¬Ґ­миЁ¬ зЁб«®¬ ўҐаиЁ­ Ё Їа®¤®«¦ Ґ¬ а бб㦤Ґ­ЁҐ Ї® Ё­¤гЄ-
жЁЁ.

7.4.2. ЏаҐ¤Ї®«®¦Ё¬, зв® ®аЁҐ­вЁа®ў ­­л© Ја д ЎҐ§ жЁЄ«®ў
еа ­Ёвбп ў в Є®© д®а¬Ґ: ¤«п Є ¦¤®Ј® i ®в 1 ¤® n ў num[i] еа ­Ёв-
бп зЁб«® ўл室пйЁе Ё§ i бв५®Є, ў adr[i][1],..., adr[i][num[i]]
- ­®¬Ґа  ўҐаиЁ­, Єг¤  нвЁ бв५ЄЁ ўҐ¤гв. ‘®бв ўЁвм (४габЁў­л©)
 «Ј®аЁв¬, Є®в®ал© Їа®Ё§ў®¤Ёв в®Ї®«®ЈЁзҐбЄго б®авЁа®ўЄг ­Ґ Ў®«ҐҐ
祬 §  C*(n+m) ¤Ґ©бвўЁ©, Ј¤Ґ m - зЁб«® ॡҐа Ја д  (бв५®Є).

‡ ¬Ґз ­ЁҐ. ЌҐЇ®б।б⢥­­ п ॠ«Ё§ жЁп ЇаЁўҐ¤Ґ­­®Ј® ўлиҐ
¤®Є § вҐ«мбвў  бгйҐбвў®ў ­Ёп ­Ґ ¤ Ґв вॡ㥬®© ®жҐ­ЄЁ; ҐҐ ЇаЁе®-
¤Ёвбп ­Ґ¬­®Ј® Ї®¤Їа ўЁвм.

ђҐиҐ­ЁҐ. Ќ и  Їа®Ја ¬¬  Ўг¤Ґв ЇҐз в вм ­®¬Ґа  ўҐаиЁ­. ‚
¬ ббЁўҐ printed: array[1..n] of boolean ¬л Ўг¤Ґ¬ еа ­Ёвм ᢥ¤Ґ-
­Ёп ® ⮬, Є ЄЁҐ ўҐаиЁ­л ­ ЇҐз в ­л (Ё Є®а४вЁа®ў вм Ёе ®¤­®ў-
६Ґ­­® б ЇҐз вмо ўҐаиЁ­л). Ѓг¤Ґ¬ Ј®ў®аЁвм, зв® ­ ЇҐз в ­­ п
Ї®б«Ґ¤®ў вҐ«м­®бвм ўҐаиЁ­ Є®а४⭠, Ґб«Ё ­ЁЄ Є п ўҐаиЁ­  ­Ґ ­ -
ЇҐз в ­  ¤ў ¦¤л Ё ¤«п «оЎ®Ј® ­®¬Ґа  i, ўе®¤п饣® ў нвг Ї®б«Ґ¤®б-
⥫쭮бвм, ўбҐ ўҐаиЁ­л, ў Є®в®алҐ ўҐ¤гв бв५ЄЁ Ё§ i, ­ ЇҐз в -
­л, Ё ЇаЁв®¬ ¤® i.

procedure add (i: 1..n);
| {¤ ­®: ­ ЇҐз в ­­®Ґ Є®а४⭮;}
| {­ ¤®: ­ ЇҐз в ­­®Ґ Є®а४⭮ Ё ўЄ«оз Ґв ўҐаиЁ­г i}
begin
| if printed [i] then begin {ўҐаиЁ­  i 㦥 ­ ЇҐз в ­ }
| | {­ЁзҐЈ® ¤Ґ« вм ­Ґ ­ ¤®}
| end else begin
| | {­ ЇҐз в ­­®Ґ Є®а४⭮}
| | for j:=1 to num[i] do begin
| | | add(adr[i][j]);
| | end;
| | {­ ЇҐз в ­­®Ґ Є®а४⭮, ўбҐ ўҐаиЁ­л, ў Є®в®алҐ Ё§
| | i ўҐ¤гв бв५ЄЁ, 㦥 ­ ЇҐз в ­л - в Є зв® ¬®¦­®
| | ЇҐз в вм i, ­Ґ ­ аги п Є®а४⭮бвЁ}
| | if not printed[i] then begin
| | | writeln(i); printed [i]:= TRUE;
| | end;
| end;
end;

Ћб­®ў­ п Їа®Ја ¬¬ :

for i:=1 to n do begin
| printed[i]:= FALSE;
end;
for i:=1 to n do begin
| add(i)
end;

7.4.3. ‚ ЇаЁўҐ¤Ґ­­®© Їа®Ја ¬¬Ґ ¬®¦­® ўлЎа®бЁвм Їа®ўҐаЄг,
§ ¬Ґ­Ёў
if not printed[i] then begin
| writeln(i); printed [i]:= TRUE;
end;
­ 
writeln(i); printed [i]:= TRUE;
Џ®зҐ¬г? Љ Є Ё§¬Ґ­Ёвбп бЇҐжЁдЁЄ жЁп Їа®жҐ¤гал?

ђҐиҐ­ЁҐ. ‘ЇҐжЁдЁЄ жЁо ¬®¦­® ўлЎа вм в Є®©:
¤ ­®: ­ ЇҐў в ­­®Ґ Є®а४⭮
­ ¤®: ­ ЇҐз в ­­®Ґ Є®а४⭮ Ё ўЄ«оз Ґв ўҐаиЁ­г i;
ўбҐ ў­®ўм ­ ЇҐз в ­­лҐ ўҐаиЁ­л ¤®бвгЇ­л Ё§ i.

7.4.4. ѓ¤Ґ ЁбЇ®«м§®ў ­ в®в д Єв, зв® Ја д ­Ґ Ё¬ҐҐв жЁЄ«®ў?

ђҐиҐ­ЁҐ. Њл ®ЇгбвЁ«Ё ¤®Є § вҐ«мбвў® Є®­Ґз­®бвЁ Ј«гЎЁ­л аҐ-
ЄгабЁЁ. „«п Є ¦¤®© ўҐаиЁ­л а бᬮваЁ¬ ҐҐ "Ј«гЎЁ­г" - ¬ ЄбЁ-
¬ «м­го ¤«Ё­г ЇгвЁ Ї® бв५Є ¬, Ё§ ­ҐҐ ўл室п饣®. “б«®ўЁҐ ®в-
бгвбвўЁп жЁЄ«®ў Ј а ­вЁагҐв, зв® нв  ўҐ«ЁзЁ­  Є®­Ґз­ . €§ ўҐаиЁ-
­л ­г«Ґў®© Ј«гЎЁ­л бв५®Є ­Ґ ўл室Ёв. ѓ«гЎЁ­  Є®­ж  бв५ЄЁ Ї®
Єа ©­Ґ© ¬ҐаҐ ­  1 ¬Ґ­миҐ, 祬 Ј«гЎЁ­  ­ з « . ЏаЁ а Ў®вҐ Їа®жҐ-
¤гал add(i) ўбҐ ४габЁў­лҐ ўл§®ўл add(j) ®в­®бпвбп Є ўҐаиЁ­ ¬
¬Ґ­м襩 Ј«гЎЁ­л.

‘ўп§­ п Є®¬Ї®­Ґ­в  Ја д . ЌҐ®аЁҐ­вЁа®ў ­­л© Ја д - ­ Ў®а
в®зҐЄ (ўҐаиЁ­), ­ҐЄ®в®алҐ Ё§ Є®в®але ᮥ¤Ё­Ґ­л «Ё­Ёп¬Ё (ॡа -
¬Ё). ЌҐ®аЁҐ­вЁа®ў ­­л© Ја д ¬®¦­® бзЁв вм з бв­л¬ б«гз Ґ¬ ®аЁҐ­-
вЁа®ў ­­®Ј® Ја д , ў Є®в®а®¬ ¤«п Є ¦¤®© бв५ЄЁ Ґбвм ®Ўа в­ п.
‘ўп§­®© Є®¬Ї®­Ґ­в®© ўҐаиЁ­л i ­ §лў Ґвбп ¬­®¦Ґбвў® ўбҐе вҐе
ўҐаиЁ­, ў Є®в®алҐ ¬®¦­® Ї®Ї бвм Ё§ i, Ё¤п Ї® ॡࠬ Ја д . (Џ®б-
Є®«мЄг Ја д ­Ґ®аЁҐ­вЁа®ў ­­л©, ®в­®иҐ­ЁҐ "j ЇаЁ­ ¤«Ґ¦Ёв бўп§­®©
Є®¬Ї®­Ґ­вҐ i" пў«пҐвбп ®в­®иҐ­ЁҐ¬ нЄўЁў «Ґ­в­®бвЁ.)

7.4.5. „ ­ ­Ґ®аЁҐ­вЁа®ў ­­л© Ја д (¤«п Є ¦¤®© ўҐаиЁ­л гЄ -
§ ­® зЁб«® б®бҐ¤Ґ© Ё ¬ ббЁў ­®¬Ґа®ў б®бҐ¤Ґ©, Є Є ў ЇаҐ¤л¤г饩
§ ¤ зҐ). ‘®бв ўЁвм  «Ј®аЁв¬, Є®в®ал© Ї® § ¤ ­­®¬г i ЇҐз в Ґв ўбҐ
ўҐаиЁ­л бўп§­®© Є®¬Ї®­Ґ­вл i Ї® ®¤­®¬г а §г (Ё в®«мЄ® Ёе). —Ёб«®
¤Ґ©бвўЁ© ­Ґ ¤®«¦­® ЇаҐў®б室Ёвм C*(®ЎйҐҐ зЁб«® ўҐаиЁ­ Ё ॡҐа ў
бўп§­®© Є®¬Ї®­Ґ­вҐ).

ђҐиҐ­ЁҐ. Џа®Ја ¬¬  ў Їа®жҐбᥠࠡ®вл Ўг¤Ґв "§ Єа иЁў вм"
­ҐЄ®в®алҐ ўҐаиЁ­л Ја д . ЌҐ§ Єа иҐ­­®© з бвмо Ја д  Ўг¤Ґ¬ ­ §л-
ў вм в®, зв® ®бв ­Ґвбп, Ґб«Ё ўлЎа®бЁвм ўбҐ § Єа иҐ­­лҐ ўҐаиЁ­л Ё
ўҐ¤гйЁҐ ў ­Ёе ॡа . Џа®жҐ¤га  add(i) § Єа иЁў Ґв бўп§­го Є®¬Ї®-
­Ґ­вг i ў ­Ґ§ Єа иҐ­­®¬ Ја дҐ (Ё ­Ґ ¤Ґ« Ґв ­ЁзҐЈ®, Ґб«Ё ўҐаиЁ­ 
i 㦥 § Єа иҐ­ ).

procedure add (i:1..n);
begin
| if ўҐаиЁ­  i § Єа иҐ­  then begin
| | ­ЁзҐЈ® ¤Ґ« вм ­Ґ ­ ¤®
| end else begin
| | § Єа бЁвм i (­ ЇҐз в вм Ё Ї®¬ҐвЁвм Є Є § Єа иҐ­­го)
| | ¤«п ўбҐе j, б®бҐ¤­Ёе б i
| | | add(j);
| | end;
| end;
end;

„®Є ¦Ґ¬, зв® нв  Їа®жҐ¤га  ¤Ґ©бвўгҐв Їа ўЁ«м­® (ў ЇаҐ¤Ї®«®¦Ґ­ЁЁ,
з⮠४габЁў­лҐ ўл§®ўл а Ў®в ов Їа ўЁ«м­®). ‚ б ¬®¬ ¤Ґ«Ґ, ­ЁзҐ-
Ј®, Єа®¬Ґ бўп§­®© Є®¬Ї®­Ґ­вл ­Ґ§ Єа иҐ­­®Ј® Ја д , ®­  § Єа бЁвм
­Ґ ¬®¦Ґв. Џа®ўҐаЁ¬, зв® ўбп ®­  Ўг¤Ґв § Єа иҐ­ . Џгбвм k - ўҐа-
иЁ­ , ¤®бвгЇ­ п Ё§ ўҐаиЁ­л i Ї® ЇгвЁ i-j-...-k, Їа®е®¤п饬г
в®«мЄ® Ї® ­Ґ§ Єа иҐ­­л¬ ўҐаиЁ­ ¬. Ѓг¤Ґ¬ а бб¬ ваЁў вм в®«мЄ® Їг-
вЁ, ­Ґ ў®§ўа й ойЁҐбп б­®ў  ў i. €§ ўбҐе в ЄЁе Їг⥩ ўлЎҐаҐ¬
Їгвм б ­ Ё¬Ґ­миЁ¬ j (ў Ї®ап¤ЄҐ Їа®б¬®ва  б®бҐ¤Ґ© ў жЁЄ«Ґ ў Їа®-
楤гаҐ). ’®Ј¤  ЇаЁ а бᬮв७ЁЁ ЇаҐ¤л¤гйЁе б®бҐ¤Ґ© ­Ё ®¤­  Ё§
ўҐаиЁ­ j-...-k ­Ґ Ўг¤Ґв § Єа иҐ­  (Ё­ зҐ j ­Ґ Ўл«® Ўл ¬Ё­Ё-
¬ «м­л¬) Ё Ї®в®¬г k ®Є ¦Ґвбп ў бўп§­®© Є®¬Ї®­Ґ­вҐ ­Ґ§ Єа иҐ­­®Ј®
Ја д  Є ¬®¬Ґ­в㠢맮ў  add(j). —в® Ё вॡ®ў «®бм.
—в®Ўл гбв ­®ўЁвм Є®­Ґз­®бвм Ј«гЎЁ­л ४габЁЁ, § ¬ҐвЁ¬, зв®
­  Є ¦¤®¬ га®ў­Ґ ४габЁЁ зЁб«® ­Ґ§ Єа иҐ­­ле ўҐаиЁ­ 㬥­ми Ґвбп
е®вп Ўл ­  1.
ЋжҐ­Ё¬ зЁб«® ¤Ґ©бвўЁ©. Љ ¦¤ п ўҐаиЁ­  § Єа иЁў Ґвбп ­Ґ Ў®-
«ҐҐ ®¤­®Ј® а §  - ЇаЁ ЇҐаўл¬ ўл§®ўҐ add(i) б ¤ ­­л¬ i. ‚ᥠЇ®б-
«Ґ¤гойЁҐ ўл§®ўл Їа®Ёб室пв ЇаЁ § Єа иЁў ­ЁЁ б®бҐ¤Ґ© - Є®«ЁзҐбвў®
в ЄЁе ўл§®ў®ў ­Ґ Ў®«миҐ зЁб«  б®бҐ¤Ґ© - Ё бў®¤пвбп Є Їа®ўҐаЄҐ
в®Ј®, зв® ўҐаиЁ­  i 㦥 § Єа иҐ­ . ЏҐаўл© ¦Ґ ўл§®ў б®бв®Ёв ў
Їа®б¬®вॠўбҐе б®бҐ¤Ґ© Ё ४габЁў­ле ўл§®ў е add(j) ¤«п ўбҐе
­Ёе. ’ ЄЁ¬ ®Ўа §®¬, ®ЎйҐҐ зЁб«® ¤Ґ©бвўЁ©, бўп§ ­­ле б ўҐаиЁ­®©
i, ­Ґ ЇаҐў®б室Ёв Є®­бв ­вл, г¬­®¦Ґ­­®© ­  зЁб«® ҐҐ б®бҐ¤Ґ©. Ћв-
бо¤  Ё ўл⥪ Ґв вॡ㥬 п ®жҐ­Є .

7.4.6. ђҐиЁвм вг ¦Ґ § ¤ зг ¤«п ®аЁҐ­вЁа®ў ­­®Ј® Ја д  (­ -
ЇҐз в вм ўбҐ ўҐаиЁ­л, ¤®бвгЇ­лҐ Ё§ ¤ ­­®© Ї® бв५Є ¬; Ја д ¬®-
¦Ґв ᮤҐа¦ вм жЁЄ«л).

ЋвўҐв. ѓ®¤Ёвбп Ї® бгйҐбвўг в  ¦Ґ Їа®Ја ¬¬  (бва®Єг "¤«п
ўбҐе б®бҐ¤Ґ©" ­ ¤® § ¬Ґ­Ёвм ­  "¤«п ўбҐе ўҐаиЁ­, Єг¤  ўҐ¤гв
бв५ЄЁ").

Ѓлбва п б®авЁа®ўЄ  •® а . ‚ § Є«о祭ЁҐ ЇаЁўҐ¤Ґ¬ ४габЁў­л©
 «Ј®аЁв¬ б®авЁа®ўЄЁ ¬ ббЁў , Є®в®ал© ­  Їа ЄвЁЄҐ пў«пҐвбп ®¤­Ё¬
Ё§ б ¬ле Ўлбвале. Џгбвм ¤ ­ ¬ ббЁў a[1]..a[n]. ђҐЄгабЁў­ п Їа®-
楤га  sort (l,r:integer) б®авЁагҐв гз бв®Є ¬ ббЁў  б Ё­¤ҐЄб ¬Ё
Ё§ Ї®«гЁ­вҐаў «  (l,r] (в.Ґ. a[l+1]..a[r]), ­Ґ § ва ЈЁў п ®б-
в «м­®Ј® ¬ ббЁў .

procedure sort (l,r: integer);
begin
| if (l = r) then begin
| | ­ЁзҐЈ® ¤Ґ« вм ­Ґ ­ ¤® - гз бв®Є Їгбв
| end else begin
| | ўлЎа вм б«гз ©­®Ґ зЁб«® s ў Ї®«гЁ­вҐаў «Ґ (l,r]
| | b := a[s]
| | ЇҐаҐбв ўЁвм н«Ґ¬Ґ­вл б®авЁа㥬®Ј® гз бвЄ  в Є, зв®Ўл
| | б­ з «  и«Ё н«Ґ¬Ґ­вл, ¬Ґ­миЁҐ b - гз бв®Є (l,ll]
| | § вҐ¬ н«Ґ¬Ґ­вл, а ў­лҐ b - гз бв®Є (ll,rr]
| | § вҐ¬ н«Ґ¬Ґ­вл, Ў®«миЁҐ b - гз бв®Є (rr,r]
| | sort (l,ll);
| | sort (rr,r);
| end;
end;

ЏҐаҐбв ­®ўЄ  н«Ґ¬Ґ­в®ў б®авЁа㥬®Ј® гз бвЄ  а бб¬ ваЁў « бм ў
Ј« ўҐ ® ¬ ббЁў е (нв® ¬®¦­® ᤥ« вм §  ўаҐ¬п, Їа®Ї®ажЁ®­ «м­®Ґ
¤«Ё­Ґ гз бвЄ ). Љ®­Ґз­®бвм Ј«гЎЁ­л ४габЁЁ Ј а ­вЁагҐвбп ⥬,
зв® ¤«Ё­  б®авЁа㥬®Ј® гз бвЄ  ­  Є ¦¤®¬ га®ў­Ґ ४габЁЁ
㬥­ми Ґвбп е®вп Ўл ­  1.

7.4.7. („«п §­ Є®¬ле б ®б­®ў ¬Ё ⥮ਨ ўҐа®пв­®б⥩). „®Є -
§ вм, зв® ¬ вҐ¬ вЁзҐбЄ®Ґ ®¦Ё¤ ­ЁҐ зЁб«  ®ЇҐа жЁ© ЇаЁ а Ў®вҐ нв®-
Ј®  «Ј®аЁв¬  ­Ґ ЇаҐў®б室Ёв C*n*log n, ЇаЁзҐ¬ Є®­бв ­в  C ­Ґ § -
ўЁбЁв ®в б®авЁа㥬®Ј® ¬ ббЁў .

“Є § ­ЁҐ. Џгбвм T(n) - ¬ ЄбЁ¬г¬ ¬ вҐ¬ вЁзҐбЄ®Ј® ®¦Ё¤ ­Ёп
зЁб«  ®ЇҐа жЁ© ¤«п ўбҐе ўе®¤®ў ¤«Ё­л n. €§ ⥪бв  Їа®жҐ¤гал ўл-
⥪ Ґв в Є®Ґ ­Ґа ўҐ­бвў®:

T(n) <= Cn + 1/n [б㬬  Ї® ўбҐ¬ k+l=(n-1) зЁбҐ« T(k)+T(l)]

ЏҐаўл© з«Ґ­ ᮮ⢥вбвўгҐв а бЇаҐ¤Ґ«Ґ­Ёо н«Ґ¬Ґ­в®ў ­  ¬Ґ­миЁҐ,
а ў­лҐ Ё Ў®«миЁҐ. ‚в®а®© з«Ґ­ - нв® б।­ҐҐ ¬ вҐ¬ вЁзҐбЄ®Ґ ®¦Ё-
¤ ­ЁҐ ¤«п ўбҐе ў аЁ ­в®ў б«гз ©­®Ј® ўлЎ®а . (‘ва®Ј® Ј®ў®ап, Ї®б-
Є®«мЄг б।Ё н«Ґ¬Ґ­в®ў ¬®Јгв Ўлвм а ў­лҐ, ў Їа ў®© з бвЁ ў¬Ґбв®
T(k) Ё T(l) ¤®«¦­л бв®пвм ¬ ЄбЁ¬г¬л T(x) Ї® ўбҐ¬ x, ­Ґ ЇаҐў®бе®-
¤пйЁ¬ k Ё«Ё l, ­® нв® ­Ґ ¬Ґи Ґв ¤ «м­Ґ©иЁ¬ а бб㦤Ґ­Ёп¬.) „ «ҐҐ
Ё­¤гЄжЁҐ© Ї® n ­г¦­® ¤®Є §лў вм ®жҐ­Єг T(n) <= C'nlog n. ЏаЁ
н⮬ ¤«п ўлзЁб«Ґ­Ёп б।­ҐЈ® §­ зҐ­Ёп x log x Ї® ўбҐ¬
x=1,..,n-1 ­г¦­® Ё­вҐЈаЁа®ў вм x lnx Ї® з бвп¬ Є Є lnx * d(x*x).
ЏаЁ ¤®бв в®з­® Ў®«м讬 C' з«Ґ­ Cn ў Їа ў®© з бвЁ ЇҐаҐўҐиЁў Ґвбп
§  бзҐв Ё­вҐЈа «  x*x*d(ln x), Ё Ё­¤гЄвЁў­л© и Ј Їа®е®¤Ёв.

7.4.8. €¬ҐҐвбп ¬ ббЁў Ё§ n а §«Ёз­ле 楫ле зЁбҐ« a[1]..a[n]
Ё зЁб«® k. ’ॡгҐвбп ­ ©вЁ k-®Ґ Ї® ўҐ«ЁзЁ­Ґ зЁб«® ў н⮬ ¬ ббЁ-
ўҐ, ᤥ« ў ­Ґ Ў®«ҐҐ C*n ¤Ґ©бвўЁ©, Ј¤Ґ C - ­ҐЄ®в®а п Є®­бв ­в ,
­Ґ § ўЁбпй п ®в k.

‡ ¬Ґз ­ЁҐ. ‘®авЁа®ўЄ  Ї®§ў®«пҐв ®зҐўЁ¤­л¬ ®Ўа §®¬ ᤥ« вм
нв® §  C*n*log(n) ¤Ґ©бвўЁ©. ЋзҐўЁ¤­л© бЇ®б®Ў: ­ ©вЁ ­ Ё¬Ґ­миЁ©
н«Ґ¬Ґ­в, § вҐ¬ ­ ©вЁ ўв®а®©, § вҐ¬ ваҐвЁ©,..., k-л© вॡгҐв Ї®-
ап¤Є  k*n ¤Ґ©бвўЁ©, в® Ґбвм ­Ґ Ј®¤Ёвбп (Є®­бв ­в  ЇаЁ n § ўЁбЁв
®в k).

“Є § ­ЁҐ. €§пй­л© (е®вп Їа ЄвЁзҐбЄЁ Ё ЎҐбЇ®«Ґ§­л© -
Є®­бв ­вл б«ЁиЄ®¬ ўҐ«ЁЄЁ) бЇ®б®Ў ᤥ« вм нв® в Є®ў:
Ђ. ђ §®ЎмҐ¬ ­ и ¬ ббЁў ­  n/5 ЈагЇЇ, ў Є ¦¤®© Ё§ Є®в®але Ї®
5 н«Ґ¬Ґ­в®ў. Љ ¦¤го ЈагЇЇг гЇ®а冷稬.
Ѓ. ђ бᬮваЁ¬ б।­ЁҐ н«Ґ¬Ґ­вл ўбҐе ЈагЇЇ Ё ЇҐаҐЇЁиҐ¬ Ёе ў
¬ ббЁў Ё§ n/5 н«Ґ¬Ґ­в®ў. ‘ Ї®¬®ймо ४габЁў­®Ј® ўл§®ў  ­ ©¤Ґ¬
б।­Ё© Ї® ўҐ«ЁзЁ­Ґ н«Ґ¬Ґ­в нв®Ј® ¬ ббЁў .
‚. ‘а ў­Ё¬ нв®в н«Ґ¬Ґ­в б® ўбҐ¬Ё н«Ґ¬Ґ­в ¬Ё Ёб室­®Ј® ¬ б-
бЁў : ®­Ё а §¤Ґ«пвбп ­  Ў®«миЁҐ ҐЈ® Ё ¬Ґ­миЁҐ ҐЈ® (Ё ®¤Ё­ а ў­л©
Ґ¬г). Џ®¤бзЁв ў Є®«ЁзҐбвў® вҐе Ё ¤агЈЁе, ¬л г§­ Ґ¬, ў Є Є®© Ё§
нвЁе з б⥩ ¤®«¦Ґ­ ­ е®¤Ёвбп ЁбЄ®¬л© (k-л©) н«Ґ¬Ґ­в Ё Є Є®ў ®­
в ¬ Ї® Ї®ап¤Єг.
ѓ. ЏаЁ¬Ґ­Ё¬ ४габЁў­® ­ и  «Ј®аЁв¬ Є ўлЎа ­­®© з бвЁ.

Џгбвм T(n) - ¬ ЄбЁ¬ «м­® ў®§¬®¦­®Ґ зЁб«® ¤Ґ©бвўЁ©, Ґб«Ё
нв®в бЇ®б®Ў ЇаЁ¬Ґ­пвм Є ¬ ббЁў ¬ Ё§ ­Ґ Ў®«ҐҐ 祬 n н«Ґ¬Ґ­в®ў (k
¬®¦Ґв Ўлвм Є ЄЁ¬ гЈ®¤­®). €¬ҐҐ¬ ®жҐ­Єг:
T(n) <= Cn + T(n/5) + T(ЇаЁ¬Ґа­® 0.7n)
Џ®б«Ґ¤­ҐҐ б« Ј Ґ¬®Ґ ®Ўкпб­пҐвбп в Є: ЇаЁ а §ЎЁҐ­ЁЁ ­  з бвЁ Є ¦-
¤ п з бвм ᮤҐа¦Ёв ­Ґ ¬Ґ­ҐҐ 0.3n н«Ґ¬Ґ­в®ў. ‚ б ¬®¬ ¤Ґ«Ґ, Ґб«Ё x
- б।­Ё© Ё§ б।­Ёе, в® ЇаЁ¬Ґа­® Ї®«®ўЁ­  ўбҐе б।­Ёе ¬Ґ­миҐ
x. Ђ Ґб«Ё ў ЇпвҐаЄҐ б।­Ё© н«Ґ¬Ґ­в ¬Ґ­миҐ x, в® ҐйҐ ¤ў  § ўҐ¤®-
¬® ¬Ґ­миҐ x. ’Ґ¬ б ¬л¬ Ї® Єа ©­Ґ© ¬ҐаҐ 3/5 ®в Ї®«®ўЁ­л н«Ґ¬Ґ­в®ў
¬Ґ­миҐ x.
’ҐЇҐам Ї® Ё­¤гЄжЁЁ ¬®¦­® ¤®Є § вм ®жҐ­Єг T(n) <= Cn (аҐи -
ойго а®«м ЇаЁ н⮬ ЁЈа Ґв в® ®Ўбв®п⥫мбвў®, зв® 1/5 + 0.7 < 1).
Соседние файлы в папке Шень