Добавил:
bagiwow
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
ѓ« ў 6. ’ЁЇл ¤ ле.
6.1. ‘⥪Ё.
Џгбвм ’ - ҐЄ®в®ал© вЁЇ. ђ бᬮваЁ¬ (®вбгвбвўгойЁ© ў Ї бЄ -
«Ґ) вЁЇ "б⥪ н«Ґ¬Ґв®ў вЁЇ ’". …Ј® § 票ﬨ пў«повбп Ї®б«Ґ-
¤®ў ⥫м®бвЁ § 票© вЁЇ ’.
ЋЇҐа жЁЁ:
‘¤Ґ« вм_Їгбвл¬ (var s: б⥪ н«Ґ¬Ґв®ў вЁЇ ’).
„®Ў ўЁвм (t: T; var s: б⥪ н«Ґ¬Ґв®ў вЁЇ ’).
‚§пвм (var t: T; var s: б⥪ н«Ґ¬Ґв®ў вЁЇ ’).
Џгбв (s: б⥪ н«Ґ¬Ґв®ў вЁЇ ’): boolean
‚ҐаиЁ (s: б⥪ н«Ґ¬Ґв®ў вЁЇ ’): T
(Њл Ї®«м§гҐ¬бп ®Ў®§ 票ﬨ, Ї®«пойЁ¬Ё Ї бЄ «м, е®вп ў
Ї бЄ «Ґ вЁЇ "б⥪" Ґв.) Џа®жҐ¤га "‘¤Ґ« вм_Їгбвл¬" ¤Ґ« Ґв б⥪
s Їгбвл¬. Џа®жҐ¤га "„®Ў ўЁвм" ¤®Ў ў«пҐв t ў Є®Ґж Ї®б«Ґ¤®ў -
⥫м®бвЁ s. Џа®жҐ¤га "‚§пвм" ®ЇаҐ¤Ґ«Ґ , Ґб«Ё Ї®б«Ґ¤®ў -
⥫м®бвм s ҐЇгбв ; ® § ЎЁа Ґв Ё§ Ґс Ї®б«Ґ¤Ё© н«Ґ¬Ґв, Є®-
в®ал© бв ®ўЁвбп § 票Ґ¬ ЇҐаҐ¬Ґ®© t. ‚ла ¦ҐЁҐ "Џгбв(s)" Ёб-
вЁ®, Ґб«Ё Ї®б«Ґ¤®ў ⥫м®бвм s Їгбв . ‚ла ¦ҐЁҐ "‚ҐаиЁ (s)"
®ЇаҐ¤Ґ«Ґ®, Ґб«Ё Ї®б«Ґ¤®ў ⥫м®бвм s ҐЇгбв , Ё а ў® Ї®б«Ґ¤Ґ-
¬г н«Ґ¬Ґвг Ї®б«Ґ¤®ў ⥫м®бвЁ s.
Њл Ї®Є ¦Ґ¬, Є Є ¬®¤Ґ«Ёа®ў вм б⥪ ў Ї бЄ «Ґ Ё ¤«п 祣® ®
¬®¦Ґв Ўлвм 㦥.
Њ®¤Ґ«Ёа®ў ЁҐ ®Ја ЁзҐ®Ј® б⥪ ў ¬ ббЁўҐ.
Ѓг¤Ґ¬ бзЁв вм, зв® Є®«ЁзҐбвў® н«Ґ¬Ґв®ў ў б⥪Ґ Ґ ЇаҐў®б-
室Ёв ҐЄ®в®а®Ј® зЁб« n. ’®Ј¤ б⥪ ¬®¦® ¬®¤Ґ«Ёа®ў вм б Ї®-
¬®ймо ¤ўге ЇҐаҐ¬Ґле:
‘®¤Ґа¦ ЁҐ: array [1..n] of T;
„«Ё : integer;
бзЁв п, зв® ў б⥪Ґ 室пвбп н«Ґ¬Ґвл ‘®¤Ґа¦ ЁҐ [1],...,‘®¤Ґа-
¦ ЁҐ [¤«Ё ].
—в®Ўл ᤥ« вм б⥪ Їгбвл¬, ¤®бв в®з® Ї®«®¦Ёвм
„«Ё := 0
„®Ў ўЁвм н«Ґ¬Ґв t:
{„«Ё < n}
„«Ё := „«Ё +1;
‘®¤Ґа¦ ЁҐ [„«Ё ] :=t;
‚§пвм н«Ґ¬Ґв ў ЇҐаҐ¬Ґго t:
t := ‘®¤Ґа¦ ЁҐ [„«Ё ];
„«Ё := „«Ё - 1;
‘⥪ Їгбв, Ґб«Ё „«Ё = 0.
‚ҐаиЁ б⥪ а ў ‘®¤Ґа¦ ЁҐ [„«Ё ].
’ ЄЁ¬ ®Ўа §®¬, ў¬Ґбв® ЇҐаҐ¬Ґ®© вЁЇ б⥪ ў Їа®Ја ¬¬Ґ Ї бЄ -
«Ґ ¬®¦® ЁбЇ®«м§®ў вм ¤ўҐ ЇҐаҐ¬ҐлҐ ‘®¤Ґа¦ ЁҐ Ё „«Ё . Њ®¦®
в Є¦Ґ ®ЇаҐ¤Ґ«Ёвм вЁЇ б⥪, § ЇЁб ў
const N = ...
type stack = record
‘®¤Ґа¦ ЁҐ: array [1..N] of T;
„«Ё : integer;
end;
(Њл Ї®§ў®«пҐ¬ ᥡҐ ЁбЇ®«м§®ў вм Ё¬Ґ ЇҐаҐ¬Ґле Ё§ агббЄЁе
ЎгЄў, е®вп ®Ўлз® Ї бЄ «м нв®Ј® Ґ «оЎЁв.) Џ®б«Ґ нв®Ј® ¬®Јгв
Ўлвм - ў ᮮ⢥вбвўЁЁ б Їа ўЁ« ¬Ё Ї бЄ «п - ®ЇЁб л Їа®жҐ¤гал
а Ў®вл б® б⥪®¬. Ќ ЇаЁ¬Ґа, ¬®¦® ЇЁб вм
procedure „®Ў ўЁвм (t: T; var s: stack);
begin
| {s.„«Ё , N}
| s.„«Ё := s.„«Ё + 1;
| s.‘®¤Ґа¦ ЁҐ [s.„«Ё ] := t;
end;
€бЇ®«м§®ў ЁҐ б⥪ .
Ѓг¤Ґ¬ а бб¬ ваЁў вм Ї®б«Ґ¤®ў ⥫м®бвЁ ®вЄалў ойЁебп Ё § Є-
алў ойЁебп ЄагЈ«ле Ё Єў ¤а вле бЄ®Ў®Є ( ) [ ]. ‘।Ё ўбҐе в ЄЁе
Ї®б«Ґ¤®ў ⥫м®б⥩ ўл¤Ґ«Ё¬ Їа ўЁ«млҐ - вҐ, Є®в®алҐ ¬®Јгв Ўлвм
Ї®«гзҐл Ї® в ЄЁ¬ Їа ўЁ« ¬:
1) Їгбв п Ї®б«Ґ¤®ў ⥫м®бвм Їа ўЁ«м .
2) Ґб«Ё Ђ Ё ‚ Їа ўЁ«мл, в® Ё Ђ‚ Їа ўЁ«м .
3) Ґб«Ё Ђ Їа ўЁ«м , в® [A] Ё (A) Їа ўЁ«мл.
ЏаЁ¬Ґа. Џ®б«Ґ¤®ў ⥫м®бвЁ (), [[]], [()[]()][] Їа ўЁ«мл,
Ї®б«Ґ¤®ў ⥫м®бвЁ ], )(, (], ([)] - Ґв.
6.1.1. Џа®ўҐаЁвм Їа ўЁ«м®бвм Ї®б«Ґ¤®ў ⥫м®бвЁ § ўаҐ¬п,
Ґ ЇаҐў®б室п饥 Є®бв вл, 㬮¦Ґ®© Ґс ¤«Ёг. ЏаҐ¤Ї®« Ј -
Ґвбп, зв® з«Ґл Ї®б«Ґ¤®ў ⥫м®бвЁ § Є®¤Ёа®ў л зЁб« ¬Ё:
( 1
[ 2
) -1
] -2
ђҐиҐЁҐ. Џгбвм a[1]..a[n] - Їа®ўҐа塞 п Ї®б«Ґ¤®ў ⥫м®бвм.
ђ бᬮваЁ¬ б⥪, н«Ґ¬Ґв ¬Ё Є®в®а®Ј® пў«повбп ®вЄалў ойЁҐбп
ЄагЈ«лҐ Ё Єў ¤а влҐ бЄ®ЎЄЁ (в. Ґ. 1 Ё 2).
‚ з «Ґ б⥪ ¤Ґ« Ґ¬ Їгбвл¬. „ «ҐҐ Їа®б¬ ваЁў Ґ¬ з«Ґл Ї®б-
«Ґ¤®ў ⥫м®бвЁ б«Ґў Їа ў®. ‚бваҐвЁў ®вЄалў ойгобп бЄ®ЎЄг
(ЄагЈ«го Ё«Ё Єў ¤а вго), Ї®¬Ґй Ґ¬ Ґс ў б⥪. ‚бваҐвЁў § Єалў -
ойгобп, Їа®ўҐа塞, зв® ўҐаиЁ ў б⥪Ґ - Ї а п Ґ© бЄ®ЎЄ ; Ґб«Ё
нв® Ґ в Є, в® ¬®¦® г⢥ত вм, зв® Ї®б«Ґ¤®ў ⥫м®бвм ҐЇа -
ўЁ«м , Ґб«Ё бЄ®ЎЄ Ї а п, в® § ЎҐаҐ¬ Ґс (ўҐаиЁг) Ё§ б⥪ .
Џ®б«Ґ¤®ў ⥫м®бвм Їа ўЁ«м , Ґб«Ё ў Є®жҐ б⥪ ®Є §лў Ґвбп
Їгбв.
‘¤Ґ« вм_Џгбвл¬ (s);
i := 0; ЋЎ а㦥 _ЋиЁЎЄ := false;
{Їа®зЁв ® i бЁ¬ў®«®ў Ї®б«Ґ¤®ў ⥫м®бвЁ}
while (i < n) and not ЋЎ а㦥 _ЋиЁЎЄ do begin
| i := i + 1;
| if (a[i] = 1) or (a[i] = 2) then begin
| | „®Ў ўЁвм (a[i], s);
| end else begin {a[i] а ў® -1 Ё«Ё -2}
| | if Џгбв (s) then begin
| | | ЋЎ а㦥 _ЋиЁЎЄ := true;
| | end else begin
| | | ‚§пвм (t, s);
| | | ЋЎ а㦥 ®иЁЎЄ := (t <> - a[i]);
| | end;
| end;
end;
Џа ўЁ«м® := (not ЋЎ а㦥 _ЋиЁЎЄ ) and Џгбв (s);
“ЎҐ¤Ё¬бп ў Їа ўЁ«м®бвЁ Їа®Ја ¬¬л. (1) …б«Ё Ї®б«Ґ¤®ў -
⥫м®бвм Ї®бв஥ Ї® Їа ўЁ« ¬, в® Їа®Ја ¬¬ ¤ б⠮⢥в "¤ ".
ќв® «ҐЈЄ® ¤®Є § вм Ё¤гЄжЁҐ© Ї® Ї®бв஥Ёо Їа ўЁ«м®© Ї®б«Ґ¤®ў -
⥫м®бвЁ. Ќ ¤® Їа®ўҐаЁвм ¤«п Їгбв®©, ¤«п Ї®б«Ґ¤®ў ⥫м®бвЁ AB
ў ЇаҐ¤Ї®«®¦ҐЁЁ, зв® ¤«п A Ё B 㦥 Їа®ўҐаҐ® - Ё ¤«п Ї®б«Ґ¤®ў -
⥫м®б⥩ [A] Ё (A) - ў ЇаҐ¤Ї®«®¦ҐЁЁ, зв® ¤«п A 㦥 Їа®ўҐаҐ®.
„«п Їгбв®© ®зҐўЁ¤®. „«п AB ¤Ґ©бвўЁп Їа®Ја ¬¬л Їа®Ёб室пв Є Є
¤«п A Ё Є®з овбп б Їгбвл¬ б⥪®¬; § ⥬ ўбҐ Їа®Ёб室Ёв Є Є ¤«п
B. „«п [A] б з « Ї®¬Ґй Ґвбп ў б⥪ ®вЄалў ой п Єў ¤а в п
бЄ®ЎЄ Ё § ⥬ ўбҐ Ё¤Ґв Є Є ¤«п A - б в®© а §ЁжҐ©, зв® ў Ј«гЎЁ-
Ґ б⥪ «Ґ¦Ёв «Ёипп бЄ®ЎЄ . Џ® ®Є®з ЁЁ A б⥪ бв ®ўЁвбп
Їгбвл¬ - Ґб«Ё Ґ бзЁв вм нв®© бЄ®ЎЄЁ - § ⥬ Ё ᮢᥬ Їгбвл¬.
Ђ «®ЈЁз® ¤«п (A).
(2) Џ®Є ¦Ґ¬, зв® Ґб«Ё Їа®Ја ¬¬ § ўҐаи Ґв а Ў®вг б ®вўҐв®¬
"¤ ", в® Ї®б«Ґ¤®ў ⥫м®бвм Їа ўЁ«м п. ђ бб㦤 Ґ¬ Ё¤гЄжЁҐ© Ї®
¤«ЁҐ Ї®б«Ґ¤®ў ⥫м®бвЁ. Џа®б«Ґ¤Ё¬ § б®бв®пЁҐ¬ б⥪ ў Їа®-
жҐббҐ а Ў®вл Їа®Ја ¬¬л. …б«Ё ® ў ҐЄ®в®ал© Їа®¬Ґ¦гв®зл© ¬®¬Ґв
Їгбв, в® Ї®б«Ґ¤®ў ⥫м®бвм а §ЎЁў Ґвбп ¤ўҐ з бвЁ, ¤«п Є ¦¤®©
Ё§ Є®в®але Їа®Ја ¬¬ ¤ Ґв ®вўҐв "¤ "; ®бв Ґвбп ў®бЇ®«м§®ў вмбп
ЇаҐ¤Ї®«®¦ҐЁҐ¬ Ё¤гЄжЁЁ Ё ®ЇаҐ¤Ґ«ҐЁҐ¬ Їа ўЁ«м®бвЁ. Џгбвм б⥪
ўбҐ ўаҐ¬п ҐЇгбв. ќв® § зЁв, зв® Ї®«®¦Ґ п ў ҐЈ® ЇҐаў®¬
и ЈҐ бЄ®ЎЄ Ўг¤Ґв ўлгв Ї®б«Ґ¤Ґ¬ и ЈҐ. ’Ґ¬ б ¬л¬, ЇҐаўл© Ё
Ї®б«Ґ¤Ё© бЁ¬ў®«л Ї®б«Ґ¤®ў ⥫м®бвЁ - нв® Ї алҐ бЄ®ЎЄЁ, Ё Ї®б-
«Ґ¤®ў ⥫м®бвм Ё¬ҐҐв ўЁ¤ (A) Ё«Ё [A], а Ў®в Їа®Ја ¬¬л (Єа®¬Ґ
ЇҐаў®Ј® Ё Ї®б«Ґ¤ҐЈ® и Ј®ў) ®в«Ёз Ґвбп ®в ҐҐ а Ў®вл A «Ёим
«ЁзЁҐ¬ «ЁиҐ© бЄ®ЎЄЁ ¤Ґ б⥪ (а § ҐҐ Ґ ўлЁ¬ ов, ® Ё-
Є Є Ґ ў«ЁпҐв а Ў®вг Їа®Ја ¬¬л). ‘®ў ббл« Ґ¬бп ЇаҐ¤Ї®«®-
¦ҐЁҐ Ё¤гЄжЁЁ Ё ®ЇаҐ¤Ґ«ҐЁҐ Їа ўЁ«м®бвЁ.
6.1.2. Љ Є гЇа®бвЁвбп Їа®Ја ¬¬ , Ґб«Ё Ё§ўҐбв®, зв® ў Ї®б-
«Ґ¤®ў ⥫м®бвЁ ¬®Јгв Ўлвм в®«мЄ® ЄагЈ«лҐ бЄ®ЎЄЁ?
ђҐиҐЁҐ. ‚ н⮬ б«гз Ґ ®в б⥪ ®бв Ґвбп «Ёим ҐЈ® ¤«Ё , Ё
¬л д ЄвЁзҐбЄЁ ЇаЁе®¤Ё¬ Є в Є®¬г г⢥তҐЁо: Ї®б«Ґ¤®ў ⥫м®бвм
ЄагЈ«ле бЄ®Ў®Є Їа ўЁ«м в®Ј¤ Ё в®«мЄ® в®Ј¤ , Є®Ј¤ ў «оЎ®¬ -
з «м®¬ ҐҐ ®в१ЄҐ зЁб«® § Єалў ойЁебп бЄ®Ў®Є Ґ ЇаҐў®б室Ёв
зЁб« ®вЄалў ойЁебп, ¤«п ўбҐ© Ї®б«Ґ¤®ў ⥫м®бвЁ нвЁ зЁб«
а ўл.
6.1.3. ђҐ «Ё§®ў вм б Ї®¬®ймо ®¤®Ј® ¬ ббЁў ¤ў б⥪ , бг¬-
¬ ஥ Є®«ЁзҐбвў® н«Ґ¬Ґв®ў ў Є®в®але ®Ја ЁзҐ® ¤«Ё®© ¬ ббЁў ;
ўбҐ ¤Ґ©бвўЁп б® б⥪ ¬Ё ¤®«¦л ўлЇ®«пвмбп § ўаҐ¬п, ®Ја ЁзҐ-
®Ґ Є®бв в®©, Ґ § ўЁбп饩 ®в ¤«Ёл б⥪®ў.
ђҐиҐЁҐ. ‘⥪Ё ¤®«¦л а бвЁ б Є®ж®ў ¬ ббЁў ўбваҐзг ¤агЈ
¤агЈг: ЇҐаўл© ¤®«¦Ґ § Ё¬ вм ¬Ґбв
‘®¤Ґа¦ ЁҐ[1] ... ‘®¤Ґа¦ ЁҐ[„«Ё 1],
ўв®а®© -
‘®¤Ґа¦ ЁҐ[n] ... ‘®¤Ґа¦ ЁҐ[n - „«Ё 2 + 1]
(ўҐаиЁл ®Ў®Ёе б⥪®ў § ЇЁб л Ї®б«Ґ¤Ё¬Ё).
6.1.4. ђҐ «Ё§®ў вм k б⥪®ў б н«Ґ¬Ґв ¬Ё вЁЇ T, ®ЎйҐҐ Є®-
«ЁзҐбвў® н«Ґ¬Ґв®ў ў Є®в®але Ґ ЇаҐў®б室Ёв n, б ЁбЇ®«м§®ў ЁҐ¬
¬ ббЁў®ў б㬬 а®© ¤«Ёл C*(n+k), § ва зЁў п Є ¦¤®Ґ ¤Ґ©бвўЁҐ
б® б⥪ ¬Ё (Єа®¬Ґ з «мле ¤Ґ©бвўЁ©, ¤Ґ« ойЁе ўбҐ б⥪Ё Їгбвл-
¬Ё) ўаҐ¬п, ®Ја ЁзҐ®Ґ ҐЄ®в®а®© Є®бв в®©.
ђҐиҐЁҐ. ЏаЁ¬ҐпҐ¬л© ¬Ґв®¤ §лў Ґвбп "ббл«®з®© ॠ«Ё§ жЁ-
Ґ©". Ћ ЁбЇ®«м§гҐв ваЁ ¬ ббЁў :
‘®¤Ґа¦ ЁҐ: array [1..n] of T;
‘«Ґ¤гойЁ©: array [1..n] of 0..n;
‚ҐаиЁ : array [1..k] of 0..n.
Њ ббЁў ‘®¤Ґа¦ ЁҐ Ўг¤Ґ¬ Ё§®Ўа ¦ вм Є Є n п祥Є б ®¬Ґа ¬Ё
1..n, Є ¦¤ п Ё§ Є®в®але ᮤҐа¦Ёв н«Ґ¬Ґв вЁЇ T. Њ ббЁў ‘«Ґ¤г-
ойЁ© Ё§®Ўа §Ё¬ ў ўЁ¤Ґ бв५®Є, Їа®ўҐ¤п бв५Єг Ё§ i ў j, Ґб«Ё
‘«Ґ¤гойЁ©[i] = j. (…б«Ё ‘«Ґ¤гойЁ©[i] = 0, бв५®Є Ё§ i Ґ Їа®ў®-
¤Ё¬.) ‘®¤Ґа¦Ё¬®Ґ s-Ј® б⥪ (s Ё§ 1..k) еа Ёвбп в Є: ўҐаиЁ
а ў ‘®¤Ґа¦ ЁҐ[‚ҐаиЁ [s]], ®бв «млҐ н«Ґ¬Ґвл s-Ј® б⥪ ¬®¦-
® ©вЁ, Ё¤п Ї® бв५Є ¬ - ¤® вҐе Ї®а, Ї®Є ®Ё Ґ Є®з вбп.
ЏаЁ н⮬ (s-л© б⥪ Їгбв) <=> ‚ҐаиЁ [s] = 0.
‘в५®злҐ ва ҐЄв®аЁЁ, ўл室пйЁҐ Ё§ ‚ҐаиЁ [1], ..., ‚ҐаиЁ-
[k] (Ё§ вҐе, Є®в®алҐ Ґ а ўл 0) Ґ ¤®«¦л ЇҐаҐбҐЄ вмбп. Џ®¬Ё-
¬® Ёе, ¬ Ї® ¤®ЎЁвбп ҐйҐ ®¤ бв५®з п ва ҐЄв®аЁп, ᮤҐа¦ -
й п ўбҐ ҐЁбЇ®«м§гҐ¬лҐ ў ¤ л© ¬®¬Ґв п祩ЄЁ. …Ґ з «® ¬л Ўг-
¤Ґ¬ еа Ёвм ў ЇҐаҐ¬Ґ®© ‘ў®Ў®¤ п (а ўҐбвў® ‘ў®Ў®¤ п = 0 ®§-
з Ґв, зв® Їгбв®Ј® ¬Ґбв Ґ ®бв «®бм). ‚®в зв® Ї®«гз Ґвбп:
n=8 | a | p | q | d | s | t | v | w |
k=2 | | | ‘ў®Ў®¤ п
‘®¤Ґа¦ ЁҐ = <a,p,q,d,s,t,v,w>, ‘«Ґ¤гойЁ© = <3,0,6,0,0,2,5,4>
‚ҐаиЁ = <1, 7>, ‘ў®Ў®¤ п = 8
‘⥪Ё: 1-л©: p t q a (a-ўҐаиЁ ); 2-®©: s v (v-ўҐаиЁ ).
procedure Ќ з вм_а Ў®вг; {„Ґ« Ґв ўбҐ б⥪Ё Їгбвл¬Ё}
| var i: integer;
begin
| for i := 1 to k do begin
| | ‚ҐаиЁ [i]:=0;
| end;
| for i := 1 to n-1 do begin
| | ‘«Ґ¤гойЁ© [i] := i+1;
| end;
| ‘ў®Ў®¤ п:=1;
end;
function …бвм_¬Ґбв®: boolean;
begin
| …бвм ЊҐбв® := (‘ў®Ў®¤ п <> 0);
end;
procedure „®Ў ўЁвм (t: T; s: integer);
| {„®Ў ўЁвм t Є s-¬г б⥪г}
| var i: 1..n;
begin
| {…бвм_¬Ґбв®}
| i := ‘ў®Ў®¤ п;
| ‘ў®Ў®¤ п := ‘«Ґ¤гойЁ© [i];
| ‚ҐаиЁ [s] :=i;
| ‘®¤Ґа¦ ЁҐ [i] := t;
| ‘«Ґ¤гойЁ© [i] := ‚ҐаиЁ [s];
end;
function Џгбв (s: integer): boolean; {s-л© б⥪ Їгбв}
begin
| Џгбв := (‚ҐаиЁ [s] = 0);
end;
procedure ‚§пвм (var t: T; s: integer);
| {ў§пвм Ё§ s-Ј® б⥪ ў t}
| var i: 1..n;
| begin
| {not Џгбв (s)}
| i := ‚ҐаиЁ [s];
| t := ‘®¤Ґа¦ ЁҐ [i];
| ‚ҐаиЁ [s] := ‘«Ґ¤гойЁ© [i];
| ‘«Ґ¤гойЁ© [i] := ‘ў®Ў®¤ п;
| ‘ў®Ў®¤ п := i;
end;
6.2. ЋзҐаҐ¤Ё.
‡ 票ﬨ вЁЇ "®зҐаҐ¤м н«Ґ¬Ґв®ў вЁЇ T", Є Є Ё ¤«п бвҐ-
Є®ў, пў«повбп Ї®б«Ґ¤®ў ⥫м®бвЁ § 票© вЁЇ T. ђ §Ёж б®бв®-
Ёв ў ⮬, зв® ЎҐагвбп н«Ґ¬Ґвл Ґ б Є®ж , б з « ( ¤®Ў ў-
«повбп Ї®-ЇаҐ¦Ґ¬г ў Є®Ґж).
ЋЇҐа жЁЁ б ®зҐаҐ¤п¬Ё.
‘¤Ґ« вм_Їгбв®© (var x: ®зҐаҐ¤м н«Ґ¬Ґв®ў вЁЇ T);
„®Ў ўЁвм (t: T, var x: ®зҐаҐ¤м н«Ґ¬Ґв®ў вЁЇ T);
‚§пвм (var t: T, var x: ®зҐаҐ¤м н«Ґ¬Ґв®ў вЁЇ T);
Џгбв (x: ®зҐаҐ¤м н«Ґ¬Ґв®ў вЁЇ T): boolean;
ЋзҐаҐ¤®© (x: ®зҐаҐ¤м н«Ґ¬Ґв®ў вЁЇ T): T.
ЏаЁ ўлЇ®«ҐЁЁ Є®¬ ¤л "„®Ў ўЁвм" гЄ § л© н«Ґ¬Ґв ¤®Ў ў-
«пҐвбп ў Є®Ґж ®зҐаҐ¤Ё. Љ®¬ ¤ "‚§пвм" ўлЇ®«Ё¬ , «Ёим Ґб«Ё
®зҐаҐ¤м ҐЇгбв , Ё § ЎЁа Ґв Ё§ ҐҐ ЇҐаўл© (Ї®«®¦Ґл© вг¤
а миҐ ўбҐе) н«Ґ¬Ґв, Ї®¬Ґй п ҐЈ® ў t. ‡ 票Ґ¬ дгЄжЁЁ "ЋзҐ-
।®©" (®ЇаҐ¤Ґ«Ґ®© ¤«п ҐЇгбв®© ®зҐаҐ¤Ё) пў«пҐвбп ЇҐаўл© н«Ґ-
¬Ґв ®зҐаҐ¤Ё.
ЂЈ«Ё©бЄЁҐ §ў Ёп б⥪®ў - Last In First Out (Ї®б«Ґ¤Ё¬
ў®иҐ« - ЇҐаўл¬ ўл襫), ®зҐаҐ¤Ґ© - First In First Out (ЇҐаўл¬
ў®иҐ« - ЇҐаўл¬ ўл襫).
ђҐ «Ё§ жЁп ®зҐаҐ¤Ґ© ў ¬ ббЁўҐ.
6.2.1. ђҐ «Ё§®ў вм ®ЇҐа жЁЁ б ®зҐаҐ¤мо ®Ја ЁзҐ®© ¤«Ёл
в Є, зв®Ўл Є®«ЁзҐбвў® ¤Ґ©бвўЁ© ¤«п Є ¦¤®© ®ЇҐа жЁЁ Ўл«® ®Ја Ё-
祮 Є®бв в®©, Ґ § ўЁбп饩 ®в ¤«Ёл ®зҐаҐ¤Ё.
ђҐиҐЁҐ. Ѓг¤Ґ¬ еа Ёвм н«Ґ¬Ґвл ®зҐаҐ¤Ё ў б®бҐ¤Ёе н«Ґ¬Ґ-
в е ¬ ббЁў . ’®Ј¤ ®зҐаҐ¤м Ўг¤Ґв ЇаЁа бв вм бЇа ў Ё гЎлў вм
б«Ґў . Џ®бЄ®«мЄг ЇаЁ н⮬ ® ¬®¦Ґв ¤®©вЁ ¤® Єа п, ᢥ६ ¬ б-
бЁў ў ®Єа㦮бвм.
‚ўҐ¤Ґ¬ ¬ ббЁў ‘®¤Ґа¦ ЁҐ: array [0..n-1] of T Ё ЇҐаҐ¬ҐлҐ
ЏҐаўл©: 0..n-1,
„«Ё : 0..n.
ЏаЁ н⮬ н«Ґ¬Ґв ¬Ё ®зҐаҐ¤Ё Ўг¤гв
‘®¤Ґа¦ ЁҐ [ЏҐаўл©], ‘®¤Ґа¦ ЁҐ [ЏҐаўл© + 1],...,
‘®¤Ґа¦ ЁҐ [ЏҐаўл© + „«Ё - 1],
Ј¤Ґ б«®¦ҐЁҐ а бб¬ ваЁў Ґвбп Ї® ¬®¤г«о n. (ЏаҐ¤гЇаҐ¦¤ҐЁҐ. …б«Ё
ў¬Ґбв® нв®Ј® ўўҐбвЁ ЇҐаҐ¬ҐлҐ ЏҐаўл© Ё Џ®б«Ґ¤Ё©, ЇаЁЁ¬ ойЁҐ
§ зҐЁп ў ўлзҐв е Ї® ¬®¤г«о n, в® Їгбв п ®зҐаҐ¤м ¬®¦Ґв Ўлвм
бЇгв б ®зҐаҐ¤мо Ё§ n н«Ґ¬Ґв®ў.)
Њ®¤Ґ«Ёа®ў ЁҐ ®ЇҐа жЁ©:
‘¤Ґ« вм Џгбв®©:
„«Ё := 0;
ЏҐаўл© := 0;
„®Ў ўЁвм н«Ґ¬Ґв:
{„«Ё < n}
‘®¤Ґа¦ ЁҐ [(ЏҐаўл© + „«Ё ) mod n] := н«Ґ¬Ґв;
„«Ё := „«Ё + 1;
‚§пвм н«Ґ¬Ґв;
{„«Ё > 0}
н«Ґ¬Ґв := ‘®¤Ґа¦ ЁҐ [ЏҐаўл©];
ЏҐаўл© := (ЏҐаўл© + 1) mod n;
„«Ё := „«Ё - 1;
Џгбв = („«Ё = 0);
ЋзҐаҐ¤®© = ‘®¤Ґа¦ ЁҐ [ЏҐаўл©];
6.2.2. (‘®®ЎйЁ« Ђ.ѓ.ЉгиЁаҐЄ®) ЏаЁ¤г¬ вм бЇ®б®Ў ¬®¤Ґ«Ёа®-
ў Ёп ®зҐаҐ¤Ё б Ї®¬®ймо ¤ўге б⥪®ў (Ё дЁЄбЁа®ў ®Ј® зЁб« ЇҐ-
६Ґле вЁЇ T). ЏаЁ н⮬ ®ва Ў®вЄ n ®ЇҐа жЁ© б ®зҐаҐ¤мо ( -
з вле, Є®Ј¤ ®зҐаҐ¤м Ўл« Їгбв ) ¤®«¦ вॡ®ў вм Ї®ап¤Є n
¤Ґ©бвўЁ©.
ђҐиҐЁҐ. €ў аЁ в: б⥪Ё, б®бв ў«ҐлҐ Є®ж ¬Ё, ®Ўа §гов
®зҐаҐ¤м. (ЏҐаҐзЁб«пп н«Ґ¬Ґвл ®¤®Ј® б⥪ ўЈ«гЎм Ё § ⥬ н«Ґ-
¬Ґвл ўв®а®Ј® аг¦г, ¬л ЇҐаҐзЁб«пҐ¬ ўбҐ н«Ґ¬Ґвл ®зҐаҐ¤Ё ®в
ЇҐаў®Ј® ¤® Ї®б«Ґ¤ҐЈ®.) џб®, зв® ¤®Ў ў«ҐЁҐ бў®¤Ёвбп Є ¤®Ў ў«Ґ-
Ёо Є ®¤®¬г Ё§ б⥪®ў, Їа®ўҐаЄ Їгбв®вл - Є Їа®ўҐаЄҐ Їгбв®вл
®Ў®Ёе б⥪®ў. …б«Ё ¬л е®вЁ¬ ў§пвм н«Ґ¬Ґв, Ґбвм ¤ў б«гз п. …б«Ё
б⥪, Ј¤Ґ 室Ёвбп з «® ®зҐаҐ¤Ё, Ґ Їгбв, в® ЎҐаҐ¬ Ё§ ҐЈ®
н«Ґ¬Ґв. …б«Ё ® Їгбв, в® ЇаҐ¤ў аЁвҐ«м® ЇҐаҐЇЁблў Ґ¬ ў ҐЈ® ўбҐ
н«Ґ¬Ґвл ўв®а®Ј® б⥪ , ¬Ґпп Ї®а冷Є (нв® Їа®Ёб室Ёв б ¬® ЇаЁ
ЇҐаҐЄ« ¤лў ЁЁ Ё§ б⥪ ў б⥪) Ё бў®¤Ё¬ ¤Ґ«® Є ЇҐаў®¬г б«гз о.
•®вп зЁб«® ¤Ґ©бвўЁ© ЇаЁ н⮬ Ё Ґ ®Ја ЁзҐ® Є®бв в®©, ® ваҐ-
Ў®ў ЁҐ § ¤ зЁ ўлЇ®«Ґ®, в Є Є Є Є ¦¤л© н«Ґ¬Ґв ®зҐаҐ¤Ё ¬®¦Ґв
гз бвў®ў вм ў н⮬ Їа®жҐбᥠҐ Ў®«ҐҐ ®¤®Ј® а § .
6.2.3. „ҐЄ®¬ §лў ов бвагЄвгаг, б®зҐв ойго ®зҐаҐ¤м Ё б⥪:
Є« бвм Ё § ЎЁа вм н«Ґ¬Ґвл ¬®¦® б ®Ў®Ёе Є®ж®ў. Љ Є ॠ«Ё§®ў вм
¤ҐЄ ®Ја ЁзҐ®Ј® а §¬Ґа Ў §Ґ ¬ ббЁў в Є, зв®Ўл Є ¦¤ п ®ЇҐ-
а жЁп вॡ®ў « ®Ја ЁзҐ®Ј® зЁб« ¤Ґ©бвўЁ©?
6.2.4. (‘®®ЎйЁ« Ђ.ѓ.ЉгиЁаҐЄ®.) €¬ҐҐвбп ¤ҐЄ н«Ґ¬Ґв®ў вЁЇ
T Ё Є®Ґз®Ґ зЁб«® ЇҐаҐ¬Ґле вЁЇ T Ё 楫®Ј® вЁЇ . ‚ з «м®¬
б®бв®пЁЁ ў ¤ҐЄҐ ҐЄ®в®а®Ґ зЁб«® н«Ґ¬Ґв®ў. ‘®бв ўЁвм Їа®Ја ¬¬г,
Ї®б«Ґ ЁбЇ®«ҐЁп Є®в®а®© ў ¤ҐЄҐ ®бв «Ёбм Ўл ⥠¦Ґ б ¬лҐ н«Ґ¬Ґ-
вл, Ёе зЁб«® Ўл«® Ўл ў ®¤®© Ё§ 楫ле ЇҐаҐ¬Ґле.
“Є § ЁҐ. (1) ќ«Ґ¬Ґвл ¤ҐЄ ¬®¦® жЁЄ«ЁзҐбЄЁ ЇҐаҐбв ў«пвм,
§ ЎЁа п б ®¤®Ј® Є®ж Ё Ї®¬Ґй п ў ¤агЈ®©. Џ®б«Ґ нв®Ј®, ᤥ« ў
бв®«мЄ® ¦Ґ и Ј®ў ў ®Ўа ⮬ Їа ў«ҐЁЁ, ¬®¦® ўҐагвм ўбҐ
¬Ґбв®. (2) Љ Є Ї®пвм, Їа®и«Ё ¬л Ї®«л© ЄагЈ Ё«Ё Ґ Їа®и«Ё? …б«Ё
Ўл Ўл« Є Є®©-в® н«Ґ¬Ґв, § ўҐ¤®¬® ®вбгвбвўгойЁ© ў ¤ҐЄҐ, в® ¬®¦®
Ўл«® Ўл ҐЈ® Ї®¤бггвм Ё ¦¤ вм ўв®аЁз®Ј® Ї®пў«ҐЁп. Ќ® в ЄЁе
н«Ґ¬Ґв®ў Ґв. ‚¬Ґбв® нв®Ј® ¬®¦® ¤«п ¤ ®Ј® n ўлЇ®«Ёвм жЁЄ«Ё-
зҐбЄЁ© б¤ўЁЈ n ¤ў ¦¤л, Ї®¤бггў а §лҐ н«Ґ¬Ґвл, Ё Ї®б¬®в-
аҐвм, Ї®пўпвбп «Ё а §лҐ н«Ґ¬Ґвл зҐаҐ§ n и Ј®ў.
ЏаЁ¬ҐҐЁҐ ®зҐаҐ¤Ґ©.
6.2.5. Ќ ЇҐз в вм ў Ї®ап¤ЄҐ ў®§а бв Ёп ЇҐаўлҐ n вг-
а «мле зЁбҐ«, ў а §«®¦ҐЁҐ Є®в®але Їа®бвлҐ ¬®¦ЁвҐ«Ё ўе®¤пв
в®«мЄ® зЁб« 2, 3, 5.
ђҐиҐЁҐ. ‚ўҐ¤Ґ¬ ваЁ ®зҐаҐ¤Ё x2, x3, x5, ў Є®в®але Ўг¤Ґ¬
еа Ёвм н«Ґ¬Ґвл, Є®в®алҐ ў 2 (3, 5) а § Ў®«миҐ ЇҐз в ле, ®
ҐйҐ Ґ ЇҐз в лҐ. ЋЇаҐ¤Ґ«Ё¬ Їа®жҐ¤гаг
procedure ЇҐз в вм_Ё_¤®Ў ўЁвм (t: integer);
begin
| writeln (t);
| ¤®Ў ўЁвм (2*t, x2);
| ¤®Ў ўЁвм (3*t, x3);
| ¤®Ў ўЁвм (5*t, x5);
end;
‚®в б奬 Їа®Ја ¬¬л:
ЇҐз в вм_Ё_¤®Ў ўЁвм (1);
k := 1; { k - зЁб«® ЇҐз в ле }
{Ёў аЁ в: ЇҐз в ® ў Ї®ап¤ЄҐ ў®§а бв Ёп k ¬ЁЁ¬ «мле
з«Ґ®ў 㦮Ј® ¬®¦Ґбвў ; ў ®зҐаҐ¤пе н«Ґ¬Ґвл, ў¤ў®Ґ, ўв஥ Ё
ўЇпвҐа® Ў®«миЁҐ ЇҐз в ле, ® Ґ ЇҐз в лҐ, а бЇ®«®¦Ґ-
лҐ ў ў®§а бв о饬 Ї®ап¤ЄҐ}
while k <> n do begin
| x := min (®зҐаҐ¤®© (x2), ®зҐаҐ¤®© (x3), ®зҐаҐ¤®© (x5));
| ЇҐз в вм_Ё_¤®Ў ўЁвм (x);
| k := k+1;
| ...ў§пвм x Ё§ вҐе ®зҐаҐ¤Ґ©, Ј¤Ґ ® Ўл« ®зҐаҐ¤л¬;
end;
Џгбвм Ёў аЁ в ўлЇ®«пҐвбп. ђ бᬮваЁ¬ Ё¬ҐмиЁ© Ё§ Ґ -
ЇҐз в ле н«Ґ¬Ґв®ў ¬®¦Ґбвў . ’®Ј¤ ® ¤Ґ«Ёвбп 楫® ®¤®
Ё§ зЁбҐ« 2, 3, 5, Ё з б⮥ в Є¦Ґ ЇаЁ ¤«Ґ¦Ёв ¬®¦Ґбвўг. ‡ зЁв,
®® ЇҐз в ®. ‡ зЁв, x 室Ёвбп ў ®¤®© Ё§ ®зҐаҐ¤Ґ© Ё, б«Ґ-
¤®ў ⥫м®, пў«пҐвбп ў Ґ© ЇҐаўл¬ (¬ҐмиЁҐ ЇҐз в л, н«Ґ¬Ґ-
вл ®зҐаҐ¤Ґ© Ґ ЇҐз в л). Ќ ЇҐз в ў x, ¬л ¤®«¦л ҐЈ® Ё§кпвм Ё
¤®Ў ўЁвм ҐЈ® Єа влҐ.
„«Ёл ®зҐаҐ¤Ґ© Ґ ЇаҐў®б室пв зЁб« ЇҐз в ле н«Ґ¬Ґв®ў.
‘«Ґ¤гой п § ¤ з бўп§ б Ја д ¬Ё (Є Є®в®ал¬ ¬л ўҐас¬бп ў
Ј« ўҐ 9).
Џгбвм § ¤ ® Є®Ґз®Ґ ¬®¦Ґбвў®, н«Ґ¬Ґвл Є®в®а®Ј® §лў ов
ўҐаиЁ ¬Ё, в Є¦Ґ ҐЄ®в®а®Ґ ¬®¦Ґбвў® гЇ®а冷зҐле Ї а ўҐаиЁ,
§лў Ґ¬ле аҐЎа ¬Ё. ‚ н⮬ б«гз Ґ Ј®ў®апв, зв® § ¤ ®аЁҐвЁа®-
ў л© Ја д. Џ аг <p, q> §лў ов ॡ஬ б з «®¬ p Ё Є®ж®¬ q;
Ј®ў®апв в Є¦Ґ, зв® ®® ўл室Ёв Ё§ ўҐаиЁл p Ё ўе®¤Ёв ў ўҐаиЁг
q. ЋЎлз® ўҐаиЁл Ја д Ё§®Ўа ¦ ов в®зЄ ¬Ё, ॡа - бв५Є ¬Ё,
ўҐ¤гйЁ¬Ё Ё§ з « ў Є®Ґж. (‚ ᮮ⢥вбвўЁЁ б ®ЇаҐ¤Ґ«ҐЁҐ¬ Ё§
¤ ®© ўҐаиЁл ў ¤ го ўҐ¤Ґв Ґ Ў®«ҐҐ ®¤®Ј® ॡа ; ў®§¬®¦л
ॡа , г Є®в®але з «® б®ўЇ ¤ Ґв б Є®ж®¬.)
6.2.6. €§ўҐбв®, зв® ®аЁҐвЁа®ў л© Ја д бўп§Ґ, в. Ґ. Ё§
«оЎ®© ўҐаиЁл ¬®¦® Їа®©вЁ ў «оЎго Ї® аҐЎа ¬. Ља®¬Ґ в®Ј®, Ё§
Є ¦¤®© ўҐаиЁл ўл室Ёв бв®«мЄ® ¦Ґ ॡҐа, бЄ®«мЄ® ўе®¤Ёв. „®Є -
§ вм, зв® бгйҐбвўгҐв § ¬Єгвл© жЁЄ«, Їа®е®¤пйЁ© Ї® Є ¦¤®¬г ॡаг
а®ў® ®¤Ё а §. ‘®бв ўЁвм «Ј®аЁв¬ ®влбЄ Ёп в Є®Ј® жЁЄ« .
ђҐиҐЁҐ. ‡¬ҐҐ© Ўг¤Ґ¬ §лў вм ҐЇгбвго ®зҐаҐ¤м Ё§ ўҐаиЁ, ў
Є®в®а®© «оЎлҐ ¤ўҐ ўҐаиЁл ᮥ¤ЁҐл ॡ஬ Ја д ( з «®¬ пў«п-
Ґвбп в ўҐаиЁ , Є®в®а п Ў«Ё¦Ґ Є з «г ®зҐаҐ¤Ё). ‘в®пй п ў -
з «Ґ ®зҐаҐ¤Ё ўҐаиЁ Ўг¤Ґв еў®б⮬ §¬ҐЁ, Ї®б«Ґ¤пп - Ј®«®ў®©. Ќ
аЁбгЄҐ §¬Ґп Ё§®Ўа §Ёвбп ў ўЁ¤Ґ 楯Ё ॡҐа Ја д , бв५ЄЁ ўҐ¤гв
®в еў®бв Є Ј®«®ўҐ. „®Ў ў«ҐЁҐ ўҐаиЁл ў ®зҐаҐ¤м ᮮ⢥вбвўгҐв
а®бвг §¬ҐЁ б Ј®«®ўл, ў§пвЁҐ ўҐаиЁл - ®в१ Ёо Є®зЁЄ еў®бв .
‚ з «Ґ §¬Ґп б®бв®Ёв Ё§ Ґ¤Ёб⢥®© ўҐаиЁл. „ «ҐҐ ¬л б«Ґ-
¤гҐ¬ в Є®¬г Їа ўЁ«г:
while §¬Ґп ўЄ«оз Ґв Ґ ўбҐ ॡа do begin
| if Ё§ Ј®«®ўл ўл室Ёв ҐЁбЇ®«м§®ў ®Ґ ў §¬ҐҐ ॡ஠then begin
| | 㤫ЁЁвм §¬Ґо нвЁ¬ ॡ஬
| end else begin
| | {еў®бв §¬ҐЁ ў в®© ¦Ґ ўҐаиЁҐ, зв® Ё Ј®«®ў }
| | ®в१ вм Є®Ґж еў®бв Ё ¤®Ў ўЁвм ҐЈ® Є Ј®«®ўҐ
| | {"§¬Ґп ®вЄгблў Ґв Є®Ґж еў®бв "}
| end;
end;
„®Є ¦Ґ¬, зв® ¬л ¤®бвЁЈҐ¬ 楫Ё.
1) €¤п Ї® §¬ҐҐ ®в еў®бв Є Ј®«®ўҐ, ¬л ўе®¤Ё¬ ў Є ¦¤го ўҐа-
иЁг бв®«мЄ® ¦Ґ а §, бЄ®«мЄ® ўл室Ё¬. ’ Є Є Є ў «оЎго ўҐаиЁг
ўе®¤Ёв бв®«мЄ® ¦Ґ ॡҐа, бЄ®«мЄ® ўл室Ёв, в® Ґў®§¬®¦®бвм ўл©вЁ
®§ з Ґв, зв® ¬л з «Ё ¤ўЁ¦ҐЁҐ ў нв®© ¦Ґ в®зЄҐ.
2) ‡¬Ґп Ґ гЄ®а зЁў Ґвбп, Ї®н⮬㠫ЁЎ® ® ®еў влў Ґв ўбҐ
ॡа , «ЁЎ®, зЁ п б ҐЄ®в®а®Ј® ¬®¬Ґв , Ўг¤Ґв Ё¬Ґвм Ї®бв®п-
го ¤«Ёг. ‚® ўв®а®¬ б«гз Ґ §¬Ґп Ўг¤Ґв ЎҐбЄ®Ґз® "бЄ®«м§Ёвм Ї®
ᥡҐ". ќв® ў®§¬®¦®, в®«мЄ® Ґб«Ё Ё§ ўбҐе ўҐаиЁ §¬ҐЁ Ґ ўл室Ёв
ҐЁбЇ®«м§®ў ле ॡҐа. €§ бўп§®бвЁ б«Ґ¤гҐв, зв® ЁбЇ®«м§®ў л
ўбҐ ॡа .
‡ ¬Ґз ЁҐ Ї® ॠ«Ё§ жЁЁ Ї бЄ «Ґ. ‚ҐаиЁ ¬Ё Ја д Ўг¤Ґ¬
бзЁв вм зЁб« 1..n. „«п Є ¦¤®© ўҐаиЁл i Ўг¤Ґ¬ еа Ёвм зЁб«®
Out[i] ўл室пйЁе Ё§ ҐҐ ॡҐа, в Є¦Ґ ®¬Ґа Num[i][1],...,
Num[i][Out[i]] вҐе ўҐаиЁ, Єг¤ нвЁ аҐЎа ўҐ¤гв. ‚ Їа®жҐббҐ
Ї®бв஥Ёп §¬ҐЁ Ўг¤Ґв ўлЎЁа вм ЇҐаў®Ґ бў®Ў®¤®Ґ ॡа®. ’®Ј¤
¤®бв в®з® Ўг¤Ґв еа Ёвм ¤«п Є ¦¤®© ўҐаиЁл зЁб«® ўл室пйЁе Ё§
ҐҐ ЁбЇ®«м§®ў ле ॡҐа - нв® Ўг¤гв ॡа , Ё¤гйЁҐ ў з «Ґ
бЇЁбЄ .
6.2.7. „®Є § вм, зв® ¤«п ўбпЄ®Ј® n бгйҐбвўгҐв Ї®б«Ґ¤®ў -
⥫м®бвм г«Ґ© Ё Ґ¤ЁЁж ¤«Ёл (2 ў б⥯ҐЁ n) б® б«Ґ¤гойЁ¬
бў®©бвў®¬: Ґб«Ё "ᢥагвм ҐҐ ў Є®«мж®" Ё а бᬮваҐвм ўбҐ да Ј-
¬Ґвл ¤«Ёл n (Ёе зЁб«® а ў® (2 ў б⥯ҐЁ n)), в® ¬л Ї®«гзЁ¬
ўбҐ ў®§¬®¦лҐ Ї®б«Ґ¤®ў ⥫м®бвЁ г«Ґ© Ё Ґ¤ЁЁж ¤«Ёл n. Џ®бва®-
Ёвм «Ј®аЁв¬ ®влбЄ Ёп в Є®© Ї®б«Ґ¤®ў ⥫м®бвЁ, вॡгойЁ© Ґ
Ў®«ҐҐ (C ў б⥯ҐЁ n) ¤Ґ©бвўЁ© ¤«п ҐЄ®в®а®© Є®бв вл C.
“Є § ЁҐ. ђ бᬮваЁ¬ Ја д, ўҐаиЁ ¬Ё Є®в®а®Ј® пў«повбп Ї®б-
«Ґ¤®ў ⥫м®бвЁ г«Ґ© Ё Ґ¤ЁЁж ¤«Ёл (n-1). Ѓг¤Ґ¬ бзЁв вм, зв®
Ё§ ўҐаиЁл x ўҐ¤Ґв ॡ஠ў ўҐаиЁг y, Ґб«Ё x ¬®¦Ґв Ўлвм з «®¬,
y - Є®ж®¬ ҐЄ®в®а®© Ї®б«Ґ¤®ў ⥫м®бвЁ ¤«Ёл n. ’®Ј¤ Ё§ Є ¦-
¤®© ўҐаиЁл ўе®¤Ёв Ё ўл室Ёв ¤ў ॡа . –ЁЄ«, Їа®е®¤пйЁ© Ї® ўбҐ¬
аҐЎа ¬, Ё ¤ бв вॡ㥬го Ї®б«Ґ¤®ў ⥫м®бвм.
6.2.8. ђҐ «Ё§®ў вм k ®зҐаҐ¤Ґ© б ®Ја ЁзҐ®© б㬬 а®© ¤«Ё-
®© n, ЁбЇ®«м§гп Ї ¬пвм Ї®ап¤Є n+k, ЇаЁзҐ¬ Є ¦¤ п ®ЇҐа жЁп
(Єа®¬Ґ з «м®©, ¤Ґ« о饩 ўбҐ ®зҐаҐ¤Ё Їгбвл¬Ё) ¤®«¦ вॡ®ў вм
®Ја ЁзҐ®Ј® Є®бв в®© зЁб« ¤Ґ©бвўЁ©.
ђҐиҐЁҐ. „Ґ©бвўгҐ¬ «®ЈЁз® ббл«®з®© ॠ«Ё§ жЁЁ б⥪®ў:
¬л Ї®¬Ё¬ (¤«п Є ¦¤®© ®зҐаҐ¤Ё) ЇҐаў®Ј®, Є ¦¤л© з«Ґ ®зҐаҐ¤Ё Ї®¬-
Ёв б«Ґ¤го饣® § Ё¬ (¤«п Ї®б«Ґ¤ҐЈ® бзЁв Ґвбп, зв® § Ё¬ бв®-
Ёв дЁЄвЁўл© н«Ґ¬Ґв б ®¬Ґа®¬ 0). Ља®¬Ґ в®Ј®, ¬л ¤®«¦л ¤«п
Є ¦¤®© ®зҐаҐ¤Ё § вм Ї®б«Ґ¤ҐЈ® (Ґб«Ё ® Ґбвм) - Ё зҐ Ґ
г¤ бвбп ¤®Ў ў«пвм. Љ Є Ё ¤«п б⥪®ў, ®в¤Ґ«м® Ґбвм 楯м бў®Ў®¤-
ле п祥Є. ‡ ¬ҐвЁ¬, зв® ¤«п Їгбв®© ®зҐаҐ¤Ё Ёд®а¬ жЁп ® Ї®б«Ґ¤-
Ґ¬ н«Ґ¬ҐвҐ вҐапҐв б¬лб« - ® ® Ё Ґ ЁбЇ®«м§гҐвбп ЇаЁ ¤®Ў ў-
«ҐЁЁ.
‘®¤Ґа¦ ЁҐ: array [1..n] of T;
‘«Ґ¤гойЁ©: array [1..n] of 0..n;
ЏҐаўл©: array [1..n] of 0..n;
Џ®б«Ґ¤Ё©: array [1..k] of 0..n;
‘ў®Ў®¤ п : 0..n;
procedure ‘¤Ґ« вм_Їгбвл¬;
| var i: integer;
begin
| for i := 1 to n-1 do begin
| | ‘«Ґ¤гойЁ© [i] := i + 1;
| end;
| ‘ў®Ў®¤ п := 1;
| for i := 1 to k do begin
| | ЏҐаўл© [i]:=0;
| end;
end;
function …бвм_¬Ґбв® : boolean;
begin
| …бвм_¬Ґбв® := ‘ў®Ў®¤ п <> 0;
end;
function Џгбв (®¬Ґа_®зҐаҐ¤Ё: integer): boolean;
begin
| Џгбв := ЏҐаўл© [®¬Ґа_®зҐаҐ¤Ё] = 0;
end;
procedure ‚§пвм (var t: T; ®¬Ґа_®зҐаҐ¤Ё: integer);
| var ЇҐаў: integer;
begin
| {not Џгбв (®¬Ґа_®зҐаҐ¤Ё)}
| ЇҐаў := ЏҐаўл© [®¬Ґа_®зҐаҐ¤Ё];
| t := ‘®¤Ґа¦ ЁҐ [ЇҐаў]
| ЏҐаўл© [®¬Ґа_®зҐаҐ¤Ё] := ‘«Ґ¤гойЁ© [ЇҐаў];
| ‘«Ґ¤гойЁ© [ЇҐаў] := ‘ў®Ў®¤ п;
| ‘ў®Ў®¤ п := ЏҐаў;
end;
procedure „®Ў ўЁвм (t: T; ®¬Ґа_®зҐаҐ¤Ё: integer);
| var ®ў, Ї®б«: 1..n;
begin
| {…бвм_бў®Ў®¤®Ґ_¬Ґбв® }
| ®ў := ‘ў®Ў®¤ п; ‘ў®Ў®¤ п := ‘«Ґ¤гойЁ© [‘ў®Ў®¤ п];
| {Ё§ бЇЁбЄ бў®Ў®¤®Ј® ¬Ґбв Ё§кпв ®¬Ґа ®ў}
| if Џгбв (®¬Ґа_®зҐаҐ¤Ё) then begin
| | ЏҐаўл© [®¬Ґа_®зҐаҐ¤Ё] := ®ў;
| | Џ®б«Ґ¤Ё© [®¬Ґа_®зҐаҐ¤Ё] := ®ў;
| | ‘«Ґ¤гойЁ© [®ў] := 0;
| | ‘®¤Ґа¦ ЁҐ [®ў] := t;
| end else begin
| | Ї®б« := Џ®б«Ґ¤Ё© [®¬Ґа_®зҐаҐ¤Ё];
| | {‘«Ґ¤гойЁ© [Ї®б«] = 0 }
| | ‘«Ґ¤гойЁ© [Ї®б«] := ®ў;
| | ‘«Ґ¤гойЁ© [®ў] := 0;
| | ‘®¤Ґа¦ ЁҐ [®ў] := t
| | Џ®б«Ґ¤Ё© [®¬Ґа_®зҐаҐ¤Ё] := ®ў;
| end;
end;
function ЋзҐаҐ¤®© (®¬Ґа_®зҐаҐ¤Ё: integer): T;
begin
| ЋзҐаҐ¤®© := ‘®¤Ґа¦ ЁҐ [ЏҐаўл© [®¬Ґа_®зҐаҐ¤Ё]];
end;
6.2.9. ’ ¦Ґ § ¤ з ¤«п ¤ҐЄ®ў ў¬Ґбв® ®зҐаҐ¤Ґ©.
“Є § ЁҐ. „ҐЄ - бвагЄвга бЁ¬¬ҐваЁз п, Ї®н⮬㠤® еа -
Ёвм ббл«ЄЁ ў ®ЎҐ бв®а®л (ўЇҐаҐ¤ Ё § ¤). ЏаЁ н⮬ 㤮Ў® Є
Є ¦¤®¬г ¤ҐЄг ¤®Ў ўЁвм дЁЄвЁўл© н«Ґ¬Ґв, § ¬Єгў ҐЈ® ў Є®«мж®, Ё
в®з® в Є®Ґ ¦Ґ Є®«мж® ®Ўа §®ў вм Ё§ бў®Ў®¤ле Ї®§ЁжЁ©.
‚ б«Ґ¤го饩 § ¤ зҐ ¤ҐЄ ЁбЇ®«м§гҐвбп ¤«п еа ҐЁп ўҐаиЁ ўл-
ЇгЄ«®Ј® ¬®Ј®гЈ®«мЁЄ .
6.2.10. Ќ Ї«®бЄ®бвЁ § ¤ ® n в®зҐЄ, Їа®г¬Ґа®ў ле б«Ґў
Їа ў® ( ЇаЁ а ўле ЎбжЁбб е - бЁ§г ўўҐае). ‘®бв ўЁвм Їа®Ј-
а ¬¬г, Є®в®а п бва®Ёв ¬®Ј®гЈ®«мЁЄ, пў«пойЁ©бп Ёе ўлЇгЄ«®© ®Ў®-
«®зЄ®©, § Ґ Ў®«ҐҐ 祬 C*n ¤Ґ©бвўЁ©.
ђҐиҐЁҐ. Ѓг¤Ґ¬ ЇаЁб®Ґ¤Ёпвм в®зЄЁ Є ўлЇгЄ«®© ®Ў®«®зЄҐ ®¤
§ ¤агЈ®©. ‹ҐЈЄ® Ї®Є § вм, зв® Ї®б«Ґ¤пп ЇаЁб®Ґ¤ЁҐ п в®зЄ
Ўг¤Ґв ®¤®© Ё§ ўҐаиЁ ўлЇгЄ«®© ®Ў®«®зЄЁ. ќвг ўҐаиЁг ¬л Ўг¤Ґ¬
§лў вм ўл¤Ґ«Ґ®©. ЋзҐаҐ¤ п ЇаЁб®Ґ¤ЁпҐ¬ п в®зЄ ўЁ¤ Ё§ ўл-
¤Ґ«Ґ®© (Ї®зҐ¬г?). „®Ї®«Ё¬ и ¬®Ј®гЈ®«мЁЄ, ўлЇгбвЁў Ё§ ўл-
¤Ґ«Ґ®© ўҐаиЁл "ЁЈ«г", ўҐ¤гйго ў ЇаЁб®Ґ¤ЁпҐ¬го в®зЄг. Џ®«г-
зЁвбп ўл஦¤Ґл© ¬®Ј®гЈ®«мЁЄ, Ё ®бв Ґвбп «ЁЄўЁ¤Ёа®ў вм ў Ґ¬
"ўЇгЄ«®бвЁ".
[ђЁбг®Є]
Ѓг¤Ґ¬ еа Ёвм ўҐаиЁл ¬®Ј®гЈ®«мЁЄ ў ¤ҐЄҐ ў Ї®ап¤ЄҐ ®Ўе®-
¤ ҐЈ® ЇҐаЁ¬Ґва Ї® з б®ў®© бв५ЄҐ. ЏаЁ н⮬ ўл¤Ґ«Ґ п ўҐаиЁ
пў«пҐвбп з «®¬ Ё Є®ж®¬ (Ј®«®ў®© Ё еў®б⮬) ¤ҐЄ . ЏаЁб®Ґ¤ЁҐ-
ЁҐ "ЁЈ«л" ⥯Ґам б®бв®Ёв ў ¤®Ў ў«ҐЁЁ ЇаЁб®Ґ¤ЁпҐ¬®© ўҐаиЁл ў
Ј®«®ўг Ё ў еў®бв ¤ҐЄ . “бва ҐЁҐ ўЇгЄ«®б⥩ ҐбЄ®«мЄ® Ў®«ҐҐ
б«®¦®. Ќ §®ўҐ¬ Ї®¤еў®б⮬ Ё Ї®¤Ї®¤еў®б⮬ н«Ґ¬Ґвл ¤ҐЄ , бв®-
пйЁҐ § ҐЈ® еў®б⮬. “бва ҐЁҐ ўЇгЄ«®бвЁ г еў®бв ¤Ґ« Ґвбп в Є:
while Ї® ¤®а®ЈҐ Ё§ еў®бв ў Ї®¤Ї®¤еў®бв ¬л Ї®ў®а зЁў Ґ¬
| г Ї®¤еў®бв ў«Ґў® ("ўЇгЄ«®бвм") do begin
| ўлЄЁгвм Ї®¤еў®бв Ё§ ¤ҐЄ
end
’ ЄЁ¬ ¦Ґ бЇ®б®Ў®¬ гбва пҐвбп ўЇгЄ«®бвм г Ј®«®ўл ¤ҐЄ .
‡ ¬Ґз ЁҐ. „Ґ©бвўЁп б Ї®¤еў®б⮬ Ё Ї®¤Ї®¤еў®б⮬ Ґ ўе®¤пв ў
®ЇаҐ¤Ґ«ҐЁҐ ¤ҐЄ , ®¤ Є® бў®¤пвбп Є ҐЎ®«м讬г зЁб«г ¬ ЁЇг«пжЁ©
б ¤ҐЄ®¬ ( ¤® § Ўа вм ваЁ н«Ґ¬Ґв б еў®бв , ᤥ« вм зв® ¤® Ё
ўҐагвм).
…йс ®¤® § ¬Ґз ЁҐ. …бвм ¤ў ўл஦¤Ґле б«гз п: Ґб«Ё ¬л ў®-
®ЎйҐ Ґ Ї®ў®а зЁў Ґ¬ г Ї®еў®бв (в.Ґ. ваЁ б®бҐ¤ЁҐ ўҐаиЁл «Ґ¦ в
®¤®© Їаאַ©) Ё Ґб«Ё ¬л Ї®ў®а зЁў Ґ¬ 180 Ја ¤гб®ў (в Є Ўл-
ў Ґв, Ґб«Ё и ¬®Ј®гЈ®«мЁЄ Ґбвм ¤ўггЈ®«мЁЄ). ‚ ЇҐаў®¬ б«гз Ґ
Ї®¤еў®бв бв®Ёв г¤ «Ёвм (зв®Ўл ў ўлЇгЄ«®© ®Ў®«®зЄҐ Ґ Ўл«® «ЁиЁе
ўҐаиЁ), ў® ўв®а®¬ б«гз Ґ - ®Ўп§ вҐ«м® ®бв ўЁвм.
6.3. Њ®¦Ґбвў .
Џгбвм ’ - ҐЄ®в®ал© вЁЇ. ‘гйҐбвўгҐв ¬®Ј® бЇ®б®Ў®ў еа Ёвм
(Є®ҐзлҐ) ¬®¦Ґбвў н«Ґ¬Ґв®ў вЁЇ ’; ўлЎ®а ¬Ґ¦¤г Ё¬Ё ®ЇаҐ¤Ґ-
«пҐвбп вЁЇ®¬ T Ё Ў®а®¬ вॡ㥬ле ®ЇҐа жЁ©.
Џ®¤¬®¦Ґбвў ¬®¦Ґбвў {1..n}.
6.3.1. €бЇ®«м§гп Ї ¬пвм, Їа®Ї®ажЁ® «мго n, еа Ёвм
Ї®¤¬®¦Ґбвў ¬®¦Ґбвў {1..n}.
ЋЇҐа жЁЁ —Ёб«® ¤Ґ©бвўЁ©
‘¤Ґ« вм Їгбвл¬ C*n
Џа®ўҐаЁвм ЇаЁ ¤«Ґ¦®бвм C
„®Ў ўЁвм C
“¤ «Ёвм ‘
ЊЁЁ¬ «мл© н«Ґ¬Ґв C*n
Џа®ўҐаЄ Їгбв®вл C*n
ђҐиҐЁҐ. •а Ё¬ ¬®¦Ґбвў® Є Є array [1..n] of boolean.
6.3.2. ’® ¦Ґ, ® Їа®ўҐаЄ Їгбв®вл ¤®«¦ ўлЇ®«пвмбп §
ўаҐ¬п C.
ђҐиҐЁҐ. •а Ё¬ ¤®Ї®«ЁвҐ«м® Є®«ЁзҐбвў® н«Ґ¬Ґв®ў.
6.3.3. ’® ¦Ґ ЇаЁ б«Ґ¤гойЁе ®Ја ЁзҐЁпе зЁб«® ¤Ґ©бвўЁ©:
ЋЇҐа жЁЁ —Ёб«® ¤Ґ©бвўЁ©
‘¤Ґ« вм Їгбвл¬ C*n
Џа®ўҐаЁвм ЇаЁ ¤«Ґ¦®бвм C
„®Ў ўЁвм C
“¤ «Ёвм C*n
ЊЁЁ¬ «мл© н«Ґ¬Ґв C
Џа®ўҐаЄ Їгбв®вл C
ђҐиҐЁҐ. „®Ї®«ЁвҐ«м® еа Ё¬ ¬ЁЁ¬ «мл© н«Ґ¬Ґв ¬®-
¦Ґбвў .
6.3.4 ’® ¦Ґ ЇаЁ б«Ґ¤гойЁе ®Ја ЁзҐЁпе зЁб«® ¤Ґ©бвўЁ©:
ЋЇҐа жЁЁ —Ёб«® ¤Ґ©бвўЁ©
‘¤Ґ« вм Їгбвл¬ ‘*n
Џа®ўҐаЁвм ЇаЁ ¤«Ґ¦®бвм ‘
„®Ў ўЁвм ‘*n
“¤ «Ёвм ‘
ЊЁЁ¬ «мл© н«Ґ¬Ґв ‘
Џа®ўҐаЄ Їгбв®вл C
ђҐиҐЁҐ. •а Ё¬ ¬ЁЁ¬ «мл©, ¤«п Є ¦¤®Ј® - б«Ґ¤гойЁ© Ё
ЇаҐ¤л¤гйЁ© Ї® ўҐ«ЁзЁҐ.
Њ®¦Ґб⢠楫ле зЁбҐ«.
‚ б«Ґ¤гойЁе § ¤ з е ўҐ«ЁзЁ н«Ґ¬Ґв®ў ¬®¦Ґбвў Ґ ®Ја Ё-
зҐ , ® Ёе Є®«ЁзҐбвў® Ґ ЇаҐў®б室Ёв n.
6.3.5. Џ ¬пвм C*n.
ЋЇҐа жЁЁ —Ёб«® ¤Ґ©бвўЁ©
‘¤Ґ« вм Їгбвл¬ C
—Ёб«® н«Ґ¬Ґв®ў C
Џа®ўҐаЁвм ЇаЁ ¤«Ґ¦®бвм C*n
„®Ў ўЁвм ®ўл©
(§ ўҐ¤®¬® ®вбгвбвўгойЁ©) C
“¤ «Ёвм C*n
ЊЁЁ¬ «мл© н«Ґ¬Ґв C*n
‚§пвм Є Є®©-в® н«Ґ¬Ґв C
ђҐиҐЁҐ. Њ®¦Ґбвў® ЇаҐ¤бв ў«пҐ¬ б Ї®¬®ймо ЇҐаҐ¬Ґле
a:array [1..n] of integer, k: 0..n; ¬®¦Ґбвў® ᮤҐа¦Ёв k н«Ґ¬Ґ-
в®ў a[1],...,a[k]; ўбҐ ®Ё а §«Ёзл. Џ® бгйҐбвўг ¬л еа Ё¬ н«Ґ-
¬Ґвл ¬®¦Ґбвў ў б⥪Ґ (ЎҐ§ Ї®ўв®аҐЁ©).
6.3.6. Џ ¬пвм C*n.
ЋЇҐа жЁЁ —Ёб«® ¤Ґ©бвўЁ©
‘¤Ґ« вм Їгбвл¬ C
Џа®ўҐаЁвм Їгбв®вг C
Џа®ўҐаЁвм ЇаЁ ¤«Ґ¦®бвм C*(log n)
„®Ў ўЁвм ‘*n
“¤ «Ёвм C*n
ЊЁЁ¬ «мл© н«Ґ¬Ґв ‘
ђҐиҐЁҐ. ‘¬. аҐиҐЁҐ ЇаҐ¤л¤г饩 § ¤ зЁ б ¤®Ї®«ЁвҐ«мл¬ гб-
«®ўЁҐ¬ a[1] < ... < a[k]. ЏаЁ Їа®ўҐаЄҐ ЇаЁ ¤«Ґ¦®бвЁ ЁбЇ®«м§гҐ¬
¤ў®Ёзл© Ї®ЁбЄ.
‚ б«Ґ¤го饩 § ¤ зҐ Ї®«Ґ§® Є®¬ЎЁЁа®ў вм а §лҐ бЇ®б®Ўл.
6.3.7. €бЇ®«м§гп ®ЇЁб ®Ґ ў ЇаҐ¤л¤г饩 § ¤ зҐ ЇаҐ¤бв ў«Ґ-
ЁҐ ¬®¦Ґбвў, ©вЁ ўбҐ ўҐаиЁл ®аЁҐвЁа®ў ®Ј® Ја д , ¤®бвгЇ-
лҐ Ё§ ¤ ®© Ї® аҐЎа ¬. (‚ҐаиЁл бзЁв Ґ¬ зЁб« ¬Ё 1..n.) ‚६п
Ґ Ў®«миҐ C * (®ЎйҐҐ зЁб«® ॡҐа, ўл室пйЁе Ё§ ¤®бвгЇле ўҐа-
иЁ).
ђҐиҐЁҐ. („агЈ®Ґ аҐиҐЁҐ ᬮваЁ ў Ј« ўҐ ® ४габЁЁ.) Џгбвм
num[i] - зЁб«® ॡҐа, ўл室пйЁе Ё§ i, out[i][1], ...,
out[i][num[i]] - ўҐаиЁл, Єг¤ ўҐ¤гв ॡа .
procedure „®бвгЇлҐ (i: integer);
| { ЇҐз в вм ўбҐ ўҐаиЁл, ¤®бвгЇлҐ Ё§ i, ўЄ«оз п i}
| var X: Ї®¤¬®¦Ґбвў® 1..n;
| P: Ї®¤¬®¦Ґбвў® 1..n;
| q, v, w: 1..n;
| k: integer;
begin
| ...ᤥ« вм X, P Їгбвл¬Ё;
| writeln (i);
| ...¤®Ў ўЁвм i Є X, P;
| {(1) P = ¬®¦Ґбвў® ЇҐз в ле ўҐаиЁ; P ᮤҐа¦Ёв i;
| (2) ЇҐз в л в®«мЄ® ¤®бвгЇлҐ Ё§ i ўҐаиЁл;
| (3) X - Ї®¤¬®¦Ґбвў® P;
| (4) ўбҐ ЇҐз в лҐ ўҐаиЁл, Ё§ Є®в®але ўл室Ёв
| ॡ஠ў Ґ ЇҐз в го ўҐаиЁг, ЇаЁ ¤«Ґ¦ в X}
| while X ҐЇгбв® do begin
| | ...ў§пвм Є Є®©-ЁЎг¤м н«Ґ¬Ґв X ў v;
| | for k := 1 to num [v] do begin
| | | w := out [v][k];
| | | if w Ґ ЇаЁ ¤«Ґ¦Ёв P then begin
| | | | writeln (w);
| | | | ¤®Ў ўЁвм w ў P;
| | | | ¤®Ў ўЁвм w ў X
| | | end;
| | end;
| end;
end;
‘ў®©бвў® (1) Ґ аги Ґвбп, в Є Є Є ЇҐз вм Їа®Ёб室Ёв ®¤-
®ўаҐ¬Ґ® б ¤®Ў ў«ҐЁҐ¬ ў P. ‘ў®©бвў (2): а § v Ўл«® ў X, в® v
¤®бвгЇ®, Ї®н⮬г w ¤®бвгЇ®. ‘ў®©бвў® (3) ®зҐўЁ¤®. ‘ў®©бвў®
(4): ¬л г¤ «Ё«Ё Ё§ X н«Ґ¬Ґв v, ® ўбҐ ўҐаиЁл, Єг¤ Ё§ v Ё¤гв
ॡа , ЇҐаҐ¤ нвЁ¬ ЇҐз в л.
ЋжҐЄ ўаҐ¬ҐЁ а Ў®вл. ‡ ¬ҐвЁ¬, зв® Ё§кпвлҐ Ё§ X н«Ґ¬Ґвл
Ў®«миҐ вг¤ Ґ ¤®Ў ў«повбп, в Є Є Є ®Ё ў ¬®¬Ґв Ё§кпвЁп (Ё,
б«Ґ¤®ў ⥫м®, ўбҐЈ¤ Ї®§¦Ґ) ЇаЁ ¤«Ґ¦ в P, ¤®Ў ў«повбп в®«мЄ®
н«Ґ¬Ґвл Ґ Ё§ P. Џ®н⮬г жЁЄ« while ўлЇ®«пҐвбп Ґ Ў®«ҐҐ, 祬
Ї® а §г, ¤«п ўбҐе ¤®бвгЇле ўҐаиЁ, жЁЄ« for ўлЇ®«пҐвбп
бв®«мЄ® а §, бЄ®«мЄ® Ё§ ўҐаиЁл ўл室Ёв ॡҐа.
„«п X ¤® ЁбЇ®«м§®ў вм ЇаҐ¤бв ў«ҐЁҐ б® б⥪®¬ Ё«Ё ®зҐ-
।мо (б¬. ўлиҐ), ¤«п P - Ўг«ҐўбЄЁ© ¬ ббЁў.
6.3.8. ђҐиЁвм ЇаҐ¤л¤гйго § ¤ зг, Ґб«Ё вॡгҐвбп, зв®Ўл ¤®б-
вгЇлҐ ўҐаиЁл ЇҐз в «Ёбм ў в Є®¬ Ї®ап¤ЄҐ: б з « § ¤ п ўҐа-
иЁ , Ї®в®¬ ҐҐ б®бҐ¤Ё, Ї®в®¬ б®бҐ¤Ё б®бҐ¤Ґ© (ҐйҐ Ґ ЇҐз в -
лҐ) Ё в.¤.
“Є § ЁҐ. ’ Є Ї®«гзЁвбп, Ґб«Ё ЁбЇ®«м§®ў вм ®зҐаҐ¤м ў ЇаЁўҐ-
¤Ґ®¬ ўлиҐ аҐиҐЁЁ: ¤®Є ¦ЁвҐ Ё¤гЄжЁҐ© Ї® k, зв® бгйҐбвўгҐв ¬®-
¬Ґв, ў Є®в®ал© ЇҐз в л ўбҐ ўҐаиЁл а ббв®пЁЁ Ґ Ў®«миҐ
k, ў ®зҐаҐ¤Ё 室пвбп ўбҐ ўҐаиЁл, г¤ «ҐлҐ а®ў® k.
Ѓ®«ҐҐ б«®¦лҐ бЇ®б®Ўл ЇаҐ¤бв ў«ҐЁп ¬®¦Ґбвў Ўг¤гв а §®Ўа л ў
Ј« ў е 11 (•ҐиЁа®ў ЁҐ) Ё 12 („ҐаҐўмп).
6.4. ђ §лҐ § ¤ зЁ.
6.4.1. ђҐ «Ё§®ў вм бвагЄвгаг ¤ ле, Є®в®а п Ё¬ҐҐв ўбҐ вҐ
¦Ґ ®ЇҐа жЁЁ, зв® ¬ ббЁў ¤«Ёл n, Ё¬Ґ®
з вм а Ў®вг
Ї®«®¦Ёвм ў i-о п祩Єг зЁб«® n
г§ вм, зв® «Ґ¦Ёв ў i-®© п祩ЄҐ
в Є¦Ґ ®ЇҐа жЁо "гЄ § вм ®¬Ґа ¬ЁЁ¬ «м®Ј® н«Ґ¬Ґв " (Ё«Ё ®¤-
®Ј® Ё§ ¬ЁЁ¬ «мле н«Ґ¬Ґв®ў). Љ®«ЁзҐбвў® ¤Ґ©бвўЁ© ¤«п ўбҐе
®ЇҐа жЁ© ¤®«¦® Ўлвм Ґ Ў®«ҐҐ C*log n, Ґ бзЁв п ®ЇҐа жЁЁ " -
з вм а Ў®вг" (Є®в®а п вॡгҐв Ґ Ў®«ҐҐ C*n ¤Ґ©бвўЁ©).
ђҐиҐЁҐ. €бЇ®«м§гҐвбп ЇаЁҐ¬, Ё§«®¦Ґл© ў а §¤Ґ«Ґ ® б®авЁ-
а®ўЄҐ ¤ҐаҐў®¬. €¬Ґ®, ¤бва®Ё¬ ¤ н«Ґ¬Ґв ¬Ё ¬ ббЁў Є Є ¤
«Ёбвмп¬Ё ¤ў®Ёз®Ґ ¤ҐаҐў®, ў Є ¦¤®© ўҐаиЁҐ Є®в®а®Ј® еа Ё¬ ¬ЁЁ-
¬г¬ н«Ґ¬Ґв®ў ᮮ⢥вбвўго饣® Ї®¤¤ҐаҐў . Љ®а४вЁа®ўЄ нв®© Ё-
д®а¬ жЁЁ, в Є¦Ґ Їа®б«Ґ¦Ёў ЁҐ ЇгвЁ Ё§ Є®ап Є ¬ЁЁ¬ «м®¬г
н«Ґ¬Ґвг вॡгов «®Ј аЁд¬ЁзҐбЄ®Ј® зЁб« ¤Ґ©бвўЁ©.
6.4.2. ЏаЁ®аЁвҐв п ®зҐаҐ¤м - нв® ®зҐаҐ¤м, ў Є®в®а®© ў ¦®
Ґ в®, Єв® ўбв « Ї®б«Ґ¤Ё¬ (Ї®а冷Є Ї®¬ҐйҐЁп ў ҐҐ Ґ ЁЈа Ґв
а®«Ё), Єв® Ј« ўҐҐ. Ѓ®«ҐҐ в®з®, ЇаЁ Ї®¬ҐйҐЁЁ ў ®зҐаҐ¤м гЄ -
§лў Ґвбп ЇаЁ®аЁвҐв Ї®¬Ґй Ґ¬®Ј® ®ЎкҐЄв (Ўг¤Ґ¬ бзЁв вм ЇаЁ®аЁвҐвл
楫묨 зЁб« ¬Ё), ЇаЁ ў§пвЁЁ Ё§ ®зҐаҐ¤Ё ўлЎЁа Ґвбп н«Ґ¬Ґв б
ЁЎ®«миЁ¬ ЇаЁ®аЁвҐв®¬ (Ё«Ё ®¤Ё Ё§ в ЄЁе н«Ґ¬Ґв®ў). ђҐ «Ё§®-
ў вм ЇаЁ®аЁвҐвго ®зҐаҐ¤м в Є, зв®Ўл Ї®¬ҐйҐЁҐ Ё ў§пвЁҐ н«Ґ¬Ґв
вॡ®ў «Ё «®Ј аЁд¬ЁзҐбЄ®Ј® зЁб« ¤Ґ©бвўЁ© (®в а §¬Ґа ®зҐаҐ¤Ё).
ђҐиҐЁҐ. ‘«Ґ¤гп «Ј®аЁв¬г б®авЁа®ўЄЁ ¤ҐаҐў®¬ (ў ҐЈ® ®Є®з -
⥫쮬 ў аЁ вҐ), Ўг¤Ґ¬ а §¬Ґй вм н«Ґ¬Ґвл ®зҐаҐ¤Ё ў ¬ ббЁўҐ
x[1]..x[k], Ї®¤¤Ґа¦Ёў п в Є®Ґ бў®©бвў®: x[i] бв аиҐ (Ё¬ҐҐв
Ў®«миЁ© ЇаЁ®аЁвҐв) бў®Ёе бл®ўҐ© x[2i] Ё x[2i+1], Ґб«Ё в Є®ўлҐ
бгйҐбвўгов - Ё, б«Ґ¤®ў ⥫м®, ўбпЄЁ© н«Ґ¬Ґв бв аиҐ бў®Ёе Ї®-
⮬Є®ў. (‘ўҐ¤ҐЁп ® ЇаЁ®аЁвҐв в Є¦Ґ еа пвбп ў ¬ ббЁўҐ, в Є зв®
¬л Ё¬ҐҐ¬ ¤Ґ«® б ¬ ббЁў®¬ Ї а (н«Ґ¬Ґв, ЇаЁ®аЁвҐв).) “¤ «ҐЁҐ
н«Ґ¬Ґв б б®еа ҐЁҐ¬ нв®Ј® бў®©бвў ®ЇЁб ® ў «Ј®аЁв¬Ґ б®авЁ-
а®ўЄЁ. Ќ ¤® ҐйҐ 㬥вм ў®ббв ў«Ёў вм бў®©бвў® Ї®б«Ґ ¤®Ў ў«ҐЁп
н«Ґ¬Ґв ў Є®Ґж. ќв® ¤Ґ« Ґвбп в Є:
t:= ®¬Ґа ¤®Ў ў«Ґ®Ј® н«Ґ¬Ґв
{Ёў аЁ в: ў ¤ҐаҐўҐ «оЎ®© ЇаҐ¤®Є ЇаЁ®аЁвҐвҐҐ Ї®в®¬Є ,
Ґб«Ё нв®в Ї®в®¬®Є - Ґ t}
while t - Ґ Є®аҐм Ё t бв аиҐ бў®ҐЈ® ®вж do begin
| Ї®¬Ґпвм t б ҐЈ® ®в殬
end;
…б«Ё ®зҐаҐ¤м ®Ўа §гов Ја ¦¤ Ґ, бв®пйЁҐ ў ўҐаиЁ е ¤ҐаҐў , в.Ґ.
§ Є ¦¤л¬ бв®Ёв ¤ў®Ґ, ЇҐаҐ¤ Є ¦¤л¬ (Єа®¬Ґ ЇҐаў®Ј®) - ®¤Ё, в®
б¬лб« нв®Ј® «Ј®аЁв¬ пбҐ: ўбв ў ў Є®Ґж, ЇаЁ®аЁвҐвл© Ја ¦¤ -
Ё зЁ Ґв Їа®ЎЁа вмбп Є з «г, ўлвҐбпп ўЇҐаҐ¤Ё бв®пйЁе -
Ї®Є Ґ ўбваҐвЁв Ў®«ҐҐ ЇаЁ®аЁвҐв®Ј®.
‡ ¬Ґз ЁҐ. ЏаЁ®аЁвҐвго ®зҐаҐ¤м ҐбвҐб⢥® ЁбЇ®«м§®ў вм
ЇаЁ ¬®¤Ґ«Ёа®ў ЁЁ Їа®вҐЄ ойЁе ў® ўаҐ¬ҐЁ Їа®жҐбб®ў. ЏаЁ н⮬
н«Ґ¬Ґвл ®зҐаҐ¤Ё - нв® ®¦Ё¤ Ґ¬лҐ б®ЎлвЁп, Ёе ЇаЁ®аЁвҐв ®ЇаҐ¤Ґ-
«пҐвбп ўаҐ¬ҐҐ¬, Є®Ј¤ ®Ё Їа®Ё§®©¤гв.
6.1. ‘⥪Ё.
Џгбвм ’ - ҐЄ®в®ал© вЁЇ. ђ бᬮваЁ¬ (®вбгвбвўгойЁ© ў Ї бЄ -
«Ґ) вЁЇ "б⥪ н«Ґ¬Ґв®ў вЁЇ ’". …Ј® § 票ﬨ пў«повбп Ї®б«Ґ-
¤®ў ⥫м®бвЁ § 票© вЁЇ ’.
ЋЇҐа жЁЁ:
‘¤Ґ« вм_Їгбвл¬ (var s: б⥪ н«Ґ¬Ґв®ў вЁЇ ’).
„®Ў ўЁвм (t: T; var s: б⥪ н«Ґ¬Ґв®ў вЁЇ ’).
‚§пвм (var t: T; var s: б⥪ н«Ґ¬Ґв®ў вЁЇ ’).
Џгбв (s: б⥪ н«Ґ¬Ґв®ў вЁЇ ’): boolean
‚ҐаиЁ (s: б⥪ н«Ґ¬Ґв®ў вЁЇ ’): T
(Њл Ї®«м§гҐ¬бп ®Ў®§ 票ﬨ, Ї®«пойЁ¬Ё Ї бЄ «м, е®вп ў
Ї бЄ «Ґ вЁЇ "б⥪" Ґв.) Џа®жҐ¤га "‘¤Ґ« вм_Їгбвл¬" ¤Ґ« Ґв б⥪
s Їгбвл¬. Џа®жҐ¤га "„®Ў ўЁвм" ¤®Ў ў«пҐв t ў Є®Ґж Ї®б«Ґ¤®ў -
⥫м®бвЁ s. Џа®жҐ¤га "‚§пвм" ®ЇаҐ¤Ґ«Ґ , Ґб«Ё Ї®б«Ґ¤®ў -
⥫м®бвм s ҐЇгбв ; ® § ЎЁа Ґв Ё§ Ґс Ї®б«Ґ¤Ё© н«Ґ¬Ґв, Є®-
в®ал© бв ®ўЁвбп § 票Ґ¬ ЇҐаҐ¬Ґ®© t. ‚ла ¦ҐЁҐ "Џгбв(s)" Ёб-
вЁ®, Ґб«Ё Ї®б«Ґ¤®ў ⥫м®бвм s Їгбв . ‚ла ¦ҐЁҐ "‚ҐаиЁ (s)"
®ЇаҐ¤Ґ«Ґ®, Ґб«Ё Ї®б«Ґ¤®ў ⥫м®бвм s ҐЇгбв , Ё а ў® Ї®б«Ґ¤Ґ-
¬г н«Ґ¬Ґвг Ї®б«Ґ¤®ў ⥫м®бвЁ s.
Њл Ї®Є ¦Ґ¬, Є Є ¬®¤Ґ«Ёа®ў вм б⥪ ў Ї бЄ «Ґ Ё ¤«п 祣® ®
¬®¦Ґв Ўлвм 㦥.
Њ®¤Ґ«Ёа®ў ЁҐ ®Ја ЁзҐ®Ј® б⥪ ў ¬ ббЁўҐ.
Ѓг¤Ґ¬ бзЁв вм, зв® Є®«ЁзҐбвў® н«Ґ¬Ґв®ў ў б⥪Ґ Ґ ЇаҐў®б-
室Ёв ҐЄ®в®а®Ј® зЁб« n. ’®Ј¤ б⥪ ¬®¦® ¬®¤Ґ«Ёа®ў вм б Ї®-
¬®ймо ¤ўге ЇҐаҐ¬Ґле:
‘®¤Ґа¦ ЁҐ: array [1..n] of T;
„«Ё : integer;
бзЁв п, зв® ў б⥪Ґ 室пвбп н«Ґ¬Ґвл ‘®¤Ґа¦ ЁҐ [1],...,‘®¤Ґа-
¦ ЁҐ [¤«Ё ].
—в®Ўл ᤥ« вм б⥪ Їгбвл¬, ¤®бв в®з® Ї®«®¦Ёвм
„«Ё := 0
„®Ў ўЁвм н«Ґ¬Ґв t:
{„«Ё < n}
„«Ё := „«Ё +1;
‘®¤Ґа¦ ЁҐ [„«Ё ] :=t;
‚§пвм н«Ґ¬Ґв ў ЇҐаҐ¬Ґго t:
t := ‘®¤Ґа¦ ЁҐ [„«Ё ];
„«Ё := „«Ё - 1;
‘⥪ Їгбв, Ґб«Ё „«Ё = 0.
‚ҐаиЁ б⥪ а ў ‘®¤Ґа¦ ЁҐ [„«Ё ].
’ ЄЁ¬ ®Ўа §®¬, ў¬Ґбв® ЇҐаҐ¬Ґ®© вЁЇ б⥪ ў Їа®Ја ¬¬Ґ Ї бЄ -
«Ґ ¬®¦® ЁбЇ®«м§®ў вм ¤ўҐ ЇҐаҐ¬ҐлҐ ‘®¤Ґа¦ ЁҐ Ё „«Ё . Њ®¦®
в Є¦Ґ ®ЇаҐ¤Ґ«Ёвм вЁЇ б⥪, § ЇЁб ў
const N = ...
type stack = record
‘®¤Ґа¦ ЁҐ: array [1..N] of T;
„«Ё : integer;
end;
(Њл Ї®§ў®«пҐ¬ ᥡҐ ЁбЇ®«м§®ў вм Ё¬Ґ ЇҐаҐ¬Ґле Ё§ агббЄЁе
ЎгЄў, е®вп ®Ўлз® Ї бЄ «м нв®Ј® Ґ «оЎЁв.) Џ®б«Ґ нв®Ј® ¬®Јгв
Ўлвм - ў ᮮ⢥вбвўЁЁ б Їа ўЁ« ¬Ё Ї бЄ «п - ®ЇЁб л Їа®жҐ¤гал
а Ў®вл б® б⥪®¬. Ќ ЇаЁ¬Ґа, ¬®¦® ЇЁб вм
procedure „®Ў ўЁвм (t: T; var s: stack);
begin
| {s.„«Ё , N}
| s.„«Ё := s.„«Ё + 1;
| s.‘®¤Ґа¦ ЁҐ [s.„«Ё ] := t;
end;
€бЇ®«м§®ў ЁҐ б⥪ .
Ѓг¤Ґ¬ а бб¬ ваЁў вм Ї®б«Ґ¤®ў ⥫м®бвЁ ®вЄалў ойЁебп Ё § Є-
алў ойЁебп ЄагЈ«ле Ё Єў ¤а вле бЄ®Ў®Є ( ) [ ]. ‘।Ё ўбҐе в ЄЁе
Ї®б«Ґ¤®ў ⥫м®б⥩ ўл¤Ґ«Ё¬ Їа ўЁ«млҐ - вҐ, Є®в®алҐ ¬®Јгв Ўлвм
Ї®«гзҐл Ї® в ЄЁ¬ Їа ўЁ« ¬:
1) Їгбв п Ї®б«Ґ¤®ў ⥫м®бвм Їа ўЁ«м .
2) Ґб«Ё Ђ Ё ‚ Їа ўЁ«мл, в® Ё Ђ‚ Їа ўЁ«м .
3) Ґб«Ё Ђ Їа ўЁ«м , в® [A] Ё (A) Їа ўЁ«мл.
ЏаЁ¬Ґа. Џ®б«Ґ¤®ў ⥫м®бвЁ (), [[]], [()[]()][] Їа ўЁ«мл,
Ї®б«Ґ¤®ў ⥫м®бвЁ ], )(, (], ([)] - Ґв.
6.1.1. Џа®ўҐаЁвм Їа ўЁ«м®бвм Ї®б«Ґ¤®ў ⥫м®бвЁ § ўаҐ¬п,
Ґ ЇаҐў®б室п饥 Є®бв вл, 㬮¦Ґ®© Ґс ¤«Ёг. ЏаҐ¤Ї®« Ј -
Ґвбп, зв® з«Ґл Ї®б«Ґ¤®ў ⥫м®бвЁ § Є®¤Ёа®ў л зЁб« ¬Ё:
( 1
[ 2
) -1
] -2
ђҐиҐЁҐ. Џгбвм a[1]..a[n] - Їа®ўҐа塞 п Ї®б«Ґ¤®ў ⥫м®бвм.
ђ бᬮваЁ¬ б⥪, н«Ґ¬Ґв ¬Ё Є®в®а®Ј® пў«повбп ®вЄалў ойЁҐбп
ЄагЈ«лҐ Ё Єў ¤а влҐ бЄ®ЎЄЁ (в. Ґ. 1 Ё 2).
‚ з «Ґ б⥪ ¤Ґ« Ґ¬ Їгбвл¬. „ «ҐҐ Їа®б¬ ваЁў Ґ¬ з«Ґл Ї®б-
«Ґ¤®ў ⥫м®бвЁ б«Ґў Їа ў®. ‚бваҐвЁў ®вЄалў ойгобп бЄ®ЎЄг
(ЄагЈ«го Ё«Ё Єў ¤а вго), Ї®¬Ґй Ґ¬ Ґс ў б⥪. ‚бваҐвЁў § Єалў -
ойгобп, Їа®ўҐа塞, зв® ўҐаиЁ ў б⥪Ґ - Ї а п Ґ© бЄ®ЎЄ ; Ґб«Ё
нв® Ґ в Є, в® ¬®¦® г⢥ত вм, зв® Ї®б«Ґ¤®ў ⥫м®бвм ҐЇа -
ўЁ«м , Ґб«Ё бЄ®ЎЄ Ї а п, в® § ЎҐаҐ¬ Ґс (ўҐаиЁг) Ё§ б⥪ .
Џ®б«Ґ¤®ў ⥫м®бвм Їа ўЁ«м , Ґб«Ё ў Є®жҐ б⥪ ®Є §лў Ґвбп
Їгбв.
‘¤Ґ« вм_Џгбвл¬ (s);
i := 0; ЋЎ а㦥 _ЋиЁЎЄ := false;
{Їа®зЁв ® i бЁ¬ў®«®ў Ї®б«Ґ¤®ў ⥫м®бвЁ}
while (i < n) and not ЋЎ а㦥 _ЋиЁЎЄ do begin
| i := i + 1;
| if (a[i] = 1) or (a[i] = 2) then begin
| | „®Ў ўЁвм (a[i], s);
| end else begin {a[i] а ў® -1 Ё«Ё -2}
| | if Џгбв (s) then begin
| | | ЋЎ а㦥 _ЋиЁЎЄ := true;
| | end else begin
| | | ‚§пвм (t, s);
| | | ЋЎ а㦥 ®иЁЎЄ := (t <> - a[i]);
| | end;
| end;
end;
Џа ўЁ«м® := (not ЋЎ а㦥 _ЋиЁЎЄ ) and Џгбв (s);
“ЎҐ¤Ё¬бп ў Їа ўЁ«м®бвЁ Їа®Ја ¬¬л. (1) …б«Ё Ї®б«Ґ¤®ў -
⥫м®бвм Ї®бв஥ Ї® Їа ўЁ« ¬, в® Їа®Ја ¬¬ ¤ б⠮⢥в "¤ ".
ќв® «ҐЈЄ® ¤®Є § вм Ё¤гЄжЁҐ© Ї® Ї®бв஥Ёо Їа ўЁ«м®© Ї®б«Ґ¤®ў -
⥫м®бвЁ. Ќ ¤® Їа®ўҐаЁвм ¤«п Їгбв®©, ¤«п Ї®б«Ґ¤®ў ⥫м®бвЁ AB
ў ЇаҐ¤Ї®«®¦ҐЁЁ, зв® ¤«п A Ё B 㦥 Їа®ўҐаҐ® - Ё ¤«п Ї®б«Ґ¤®ў -
⥫м®б⥩ [A] Ё (A) - ў ЇаҐ¤Ї®«®¦ҐЁЁ, зв® ¤«п A 㦥 Їа®ўҐаҐ®.
„«п Їгбв®© ®зҐўЁ¤®. „«п AB ¤Ґ©бвўЁп Їа®Ја ¬¬л Їа®Ёб室пв Є Є
¤«п A Ё Є®з овбп б Їгбвл¬ б⥪®¬; § ⥬ ўбҐ Їа®Ёб室Ёв Є Є ¤«п
B. „«п [A] б з « Ї®¬Ґй Ґвбп ў б⥪ ®вЄалў ой п Єў ¤а в п
бЄ®ЎЄ Ё § ⥬ ўбҐ Ё¤Ґв Є Є ¤«п A - б в®© а §ЁжҐ©, зв® ў Ј«гЎЁ-
Ґ б⥪ «Ґ¦Ёв «Ёипп бЄ®ЎЄ . Џ® ®Є®з ЁЁ A б⥪ бв ®ўЁвбп
Їгбвл¬ - Ґб«Ё Ґ бзЁв вм нв®© бЄ®ЎЄЁ - § ⥬ Ё ᮢᥬ Їгбвл¬.
Ђ «®ЈЁз® ¤«п (A).
(2) Џ®Є ¦Ґ¬, зв® Ґб«Ё Їа®Ја ¬¬ § ўҐаи Ґв а Ў®вг б ®вўҐв®¬
"¤ ", в® Ї®б«Ґ¤®ў ⥫м®бвм Їа ўЁ«м п. ђ бб㦤 Ґ¬ Ё¤гЄжЁҐ© Ї®
¤«ЁҐ Ї®б«Ґ¤®ў ⥫м®бвЁ. Џа®б«Ґ¤Ё¬ § б®бв®пЁҐ¬ б⥪ ў Їа®-
жҐббҐ а Ў®вл Їа®Ја ¬¬л. …б«Ё ® ў ҐЄ®в®ал© Їа®¬Ґ¦гв®зл© ¬®¬Ґв
Їгбв, в® Ї®б«Ґ¤®ў ⥫м®бвм а §ЎЁў Ґвбп ¤ўҐ з бвЁ, ¤«п Є ¦¤®©
Ё§ Є®в®але Їа®Ја ¬¬ ¤ Ґв ®вўҐв "¤ "; ®бв Ґвбп ў®бЇ®«м§®ў вмбп
ЇаҐ¤Ї®«®¦ҐЁҐ¬ Ё¤гЄжЁЁ Ё ®ЇаҐ¤Ґ«ҐЁҐ¬ Їа ўЁ«м®бвЁ. Џгбвм б⥪
ўбҐ ўаҐ¬п ҐЇгбв. ќв® § зЁв, зв® Ї®«®¦Ґ п ў ҐЈ® ЇҐаў®¬
и ЈҐ бЄ®ЎЄ Ўг¤Ґв ўлгв Ї®б«Ґ¤Ґ¬ и ЈҐ. ’Ґ¬ б ¬л¬, ЇҐаўл© Ё
Ї®б«Ґ¤Ё© бЁ¬ў®«л Ї®б«Ґ¤®ў ⥫м®бвЁ - нв® Ї алҐ бЄ®ЎЄЁ, Ё Ї®б-
«Ґ¤®ў ⥫м®бвм Ё¬ҐҐв ўЁ¤ (A) Ё«Ё [A], а Ў®в Їа®Ја ¬¬л (Єа®¬Ґ
ЇҐаў®Ј® Ё Ї®б«Ґ¤ҐЈ® и Ј®ў) ®в«Ёз Ґвбп ®в ҐҐ а Ў®вл A «Ёим
«ЁзЁҐ¬ «ЁиҐ© бЄ®ЎЄЁ ¤Ґ б⥪ (а § ҐҐ Ґ ўлЁ¬ ов, ® Ё-
Є Є Ґ ў«ЁпҐв а Ў®вг Їа®Ја ¬¬л). ‘®ў ббл« Ґ¬бп ЇаҐ¤Ї®«®-
¦ҐЁҐ Ё¤гЄжЁЁ Ё ®ЇаҐ¤Ґ«ҐЁҐ Їа ўЁ«м®бвЁ.
6.1.2. Љ Є гЇа®бвЁвбп Їа®Ја ¬¬ , Ґб«Ё Ё§ўҐбв®, зв® ў Ї®б-
«Ґ¤®ў ⥫м®бвЁ ¬®Јгв Ўлвм в®«мЄ® ЄагЈ«лҐ бЄ®ЎЄЁ?
ђҐиҐЁҐ. ‚ н⮬ б«гз Ґ ®в б⥪ ®бв Ґвбп «Ёим ҐЈ® ¤«Ё , Ё
¬л д ЄвЁзҐбЄЁ ЇаЁе®¤Ё¬ Є в Є®¬г г⢥তҐЁо: Ї®б«Ґ¤®ў ⥫м®бвм
ЄагЈ«ле бЄ®Ў®Є Їа ўЁ«м в®Ј¤ Ё в®«мЄ® в®Ј¤ , Є®Ј¤ ў «оЎ®¬ -
з «м®¬ ҐҐ ®в१ЄҐ зЁб«® § Єалў ойЁебп бЄ®Ў®Є Ґ ЇаҐў®б室Ёв
зЁб« ®вЄалў ойЁебп, ¤«п ўбҐ© Ї®б«Ґ¤®ў ⥫м®бвЁ нвЁ зЁб«
а ўл.
6.1.3. ђҐ «Ё§®ў вм б Ї®¬®ймо ®¤®Ј® ¬ ббЁў ¤ў б⥪ , бг¬-
¬ ஥ Є®«ЁзҐбвў® н«Ґ¬Ґв®ў ў Є®в®але ®Ја ЁзҐ® ¤«Ё®© ¬ ббЁў ;
ўбҐ ¤Ґ©бвўЁп б® б⥪ ¬Ё ¤®«¦л ўлЇ®«пвмбп § ўаҐ¬п, ®Ја ЁзҐ-
®Ґ Є®бв в®©, Ґ § ўЁбп饩 ®в ¤«Ёл б⥪®ў.
ђҐиҐЁҐ. ‘⥪Ё ¤®«¦л а бвЁ б Є®ж®ў ¬ ббЁў ўбваҐзг ¤агЈ
¤агЈг: ЇҐаўл© ¤®«¦Ґ § Ё¬ вм ¬Ґбв
‘®¤Ґа¦ ЁҐ[1] ... ‘®¤Ґа¦ ЁҐ[„«Ё 1],
ўв®а®© -
‘®¤Ґа¦ ЁҐ[n] ... ‘®¤Ґа¦ ЁҐ[n - „«Ё 2 + 1]
(ўҐаиЁл ®Ў®Ёе б⥪®ў § ЇЁб л Ї®б«Ґ¤Ё¬Ё).
6.1.4. ђҐ «Ё§®ў вм k б⥪®ў б н«Ґ¬Ґв ¬Ё вЁЇ T, ®ЎйҐҐ Є®-
«ЁзҐбвў® н«Ґ¬Ґв®ў ў Є®в®але Ґ ЇаҐў®б室Ёв n, б ЁбЇ®«м§®ў ЁҐ¬
¬ ббЁў®ў б㬬 а®© ¤«Ёл C*(n+k), § ва зЁў п Є ¦¤®Ґ ¤Ґ©бвўЁҐ
б® б⥪ ¬Ё (Єа®¬Ґ з «мле ¤Ґ©бвўЁ©, ¤Ґ« ойЁе ўбҐ б⥪Ё Їгбвл-
¬Ё) ўаҐ¬п, ®Ја ЁзҐ®Ґ ҐЄ®в®а®© Є®бв в®©.
ђҐиҐЁҐ. ЏаЁ¬ҐпҐ¬л© ¬Ґв®¤ §лў Ґвбп "ббл«®з®© ॠ«Ё§ жЁ-
Ґ©". Ћ ЁбЇ®«м§гҐв ваЁ ¬ ббЁў :
‘®¤Ґа¦ ЁҐ: array [1..n] of T;
‘«Ґ¤гойЁ©: array [1..n] of 0..n;
‚ҐаиЁ : array [1..k] of 0..n.
Њ ббЁў ‘®¤Ґа¦ ЁҐ Ўг¤Ґ¬ Ё§®Ўа ¦ вм Є Є n п祥Є б ®¬Ґа ¬Ё
1..n, Є ¦¤ п Ё§ Є®в®але ᮤҐа¦Ёв н«Ґ¬Ґв вЁЇ T. Њ ббЁў ‘«Ґ¤г-
ойЁ© Ё§®Ўа §Ё¬ ў ўЁ¤Ґ бв५®Є, Їа®ўҐ¤п бв५Єг Ё§ i ў j, Ґб«Ё
‘«Ґ¤гойЁ©[i] = j. (…б«Ё ‘«Ґ¤гойЁ©[i] = 0, бв५®Є Ё§ i Ґ Їа®ў®-
¤Ё¬.) ‘®¤Ґа¦Ё¬®Ґ s-Ј® б⥪ (s Ё§ 1..k) еа Ёвбп в Є: ўҐаиЁ
а ў ‘®¤Ґа¦ ЁҐ[‚ҐаиЁ [s]], ®бв «млҐ н«Ґ¬Ґвл s-Ј® б⥪ ¬®¦-
® ©вЁ, Ё¤п Ї® бв५Є ¬ - ¤® вҐе Ї®а, Ї®Є ®Ё Ґ Є®з вбп.
ЏаЁ н⮬ (s-л© б⥪ Їгбв) <=> ‚ҐаиЁ [s] = 0.
‘в५®злҐ ва ҐЄв®аЁЁ, ўл室пйЁҐ Ё§ ‚ҐаиЁ [1], ..., ‚ҐаиЁ-
[k] (Ё§ вҐе, Є®в®алҐ Ґ а ўл 0) Ґ ¤®«¦л ЇҐаҐбҐЄ вмбп. Џ®¬Ё-
¬® Ёе, ¬ Ї® ¤®ЎЁвбп ҐйҐ ®¤ бв५®з п ва ҐЄв®аЁп, ᮤҐа¦ -
й п ўбҐ ҐЁбЇ®«м§гҐ¬лҐ ў ¤ л© ¬®¬Ґв п祩ЄЁ. …Ґ з «® ¬л Ўг-
¤Ґ¬ еа Ёвм ў ЇҐаҐ¬Ґ®© ‘ў®Ў®¤ п (а ўҐбвў® ‘ў®Ў®¤ п = 0 ®§-
з Ґв, зв® Їгбв®Ј® ¬Ґбв Ґ ®бв «®бм). ‚®в зв® Ї®«гз Ґвбп:
n=8 | a | p | q | d | s | t | v | w |
k=2 | | | ‘ў®Ў®¤ п
‘®¤Ґа¦ ЁҐ = <a,p,q,d,s,t,v,w>, ‘«Ґ¤гойЁ© = <3,0,6,0,0,2,5,4>
‚ҐаиЁ = <1, 7>, ‘ў®Ў®¤ п = 8
‘⥪Ё: 1-л©: p t q a (a-ўҐаиЁ ); 2-®©: s v (v-ўҐаиЁ ).
procedure Ќ з вм_а Ў®вг; {„Ґ« Ґв ўбҐ б⥪Ё Їгбвл¬Ё}
| var i: integer;
begin
| for i := 1 to k do begin
| | ‚ҐаиЁ [i]:=0;
| end;
| for i := 1 to n-1 do begin
| | ‘«Ґ¤гойЁ© [i] := i+1;
| end;
| ‘ў®Ў®¤ п:=1;
end;
function …бвм_¬Ґбв®: boolean;
begin
| …бвм ЊҐбв® := (‘ў®Ў®¤ п <> 0);
end;
procedure „®Ў ўЁвм (t: T; s: integer);
| {„®Ў ўЁвм t Є s-¬г б⥪г}
| var i: 1..n;
begin
| {…бвм_¬Ґбв®}
| i := ‘ў®Ў®¤ п;
| ‘ў®Ў®¤ п := ‘«Ґ¤гойЁ© [i];
| ‚ҐаиЁ [s] :=i;
| ‘®¤Ґа¦ ЁҐ [i] := t;
| ‘«Ґ¤гойЁ© [i] := ‚ҐаиЁ [s];
end;
function Џгбв (s: integer): boolean; {s-л© б⥪ Їгбв}
begin
| Џгбв := (‚ҐаиЁ [s] = 0);
end;
procedure ‚§пвм (var t: T; s: integer);
| {ў§пвм Ё§ s-Ј® б⥪ ў t}
| var i: 1..n;
| begin
| {not Џгбв (s)}
| i := ‚ҐаиЁ [s];
| t := ‘®¤Ґа¦ ЁҐ [i];
| ‚ҐаиЁ [s] := ‘«Ґ¤гойЁ© [i];
| ‘«Ґ¤гойЁ© [i] := ‘ў®Ў®¤ п;
| ‘ў®Ў®¤ п := i;
end;
6.2. ЋзҐаҐ¤Ё.
‡ 票ﬨ вЁЇ "®зҐаҐ¤м н«Ґ¬Ґв®ў вЁЇ T", Є Є Ё ¤«п бвҐ-
Є®ў, пў«повбп Ї®б«Ґ¤®ў ⥫м®бвЁ § 票© вЁЇ T. ђ §Ёж б®бв®-
Ёв ў ⮬, зв® ЎҐагвбп н«Ґ¬Ґвл Ґ б Є®ж , б з « ( ¤®Ў ў-
«повбп Ї®-ЇаҐ¦Ґ¬г ў Є®Ґж).
ЋЇҐа жЁЁ б ®зҐаҐ¤п¬Ё.
‘¤Ґ« вм_Їгбв®© (var x: ®зҐаҐ¤м н«Ґ¬Ґв®ў вЁЇ T);
„®Ў ўЁвм (t: T, var x: ®зҐаҐ¤м н«Ґ¬Ґв®ў вЁЇ T);
‚§пвм (var t: T, var x: ®зҐаҐ¤м н«Ґ¬Ґв®ў вЁЇ T);
Џгбв (x: ®зҐаҐ¤м н«Ґ¬Ґв®ў вЁЇ T): boolean;
ЋзҐаҐ¤®© (x: ®зҐаҐ¤м н«Ґ¬Ґв®ў вЁЇ T): T.
ЏаЁ ўлЇ®«ҐЁЁ Є®¬ ¤л "„®Ў ўЁвм" гЄ § л© н«Ґ¬Ґв ¤®Ў ў-
«пҐвбп ў Є®Ґж ®зҐаҐ¤Ё. Љ®¬ ¤ "‚§пвм" ўлЇ®«Ё¬ , «Ёим Ґб«Ё
®зҐаҐ¤м ҐЇгбв , Ё § ЎЁа Ґв Ё§ ҐҐ ЇҐаўл© (Ї®«®¦Ґл© вг¤
а миҐ ўбҐе) н«Ґ¬Ґв, Ї®¬Ґй п ҐЈ® ў t. ‡ 票Ґ¬ дгЄжЁЁ "ЋзҐ-
।®©" (®ЇаҐ¤Ґ«Ґ®© ¤«п ҐЇгбв®© ®зҐаҐ¤Ё) пў«пҐвбп ЇҐаўл© н«Ґ-
¬Ґв ®зҐаҐ¤Ё.
ЂЈ«Ё©бЄЁҐ §ў Ёп б⥪®ў - Last In First Out (Ї®б«Ґ¤Ё¬
ў®иҐ« - ЇҐаўл¬ ўл襫), ®зҐаҐ¤Ґ© - First In First Out (ЇҐаўл¬
ў®иҐ« - ЇҐаўл¬ ўл襫).
ђҐ «Ё§ жЁп ®зҐаҐ¤Ґ© ў ¬ ббЁўҐ.
6.2.1. ђҐ «Ё§®ў вм ®ЇҐа жЁЁ б ®зҐаҐ¤мо ®Ја ЁзҐ®© ¤«Ёл
в Є, зв®Ўл Є®«ЁзҐбвў® ¤Ґ©бвўЁ© ¤«п Є ¦¤®© ®ЇҐа жЁЁ Ўл«® ®Ја Ё-
祮 Є®бв в®©, Ґ § ўЁбп饩 ®в ¤«Ёл ®зҐаҐ¤Ё.
ђҐиҐЁҐ. Ѓг¤Ґ¬ еа Ёвм н«Ґ¬Ґвл ®зҐаҐ¤Ё ў б®бҐ¤Ёе н«Ґ¬Ґ-
в е ¬ ббЁў . ’®Ј¤ ®зҐаҐ¤м Ўг¤Ґв ЇаЁа бв вм бЇа ў Ё гЎлў вм
б«Ґў . Џ®бЄ®«мЄг ЇаЁ н⮬ ® ¬®¦Ґв ¤®©вЁ ¤® Єа п, ᢥ६ ¬ б-
бЁў ў ®Єа㦮бвм.
‚ўҐ¤Ґ¬ ¬ ббЁў ‘®¤Ґа¦ ЁҐ: array [0..n-1] of T Ё ЇҐаҐ¬ҐлҐ
ЏҐаўл©: 0..n-1,
„«Ё : 0..n.
ЏаЁ н⮬ н«Ґ¬Ґв ¬Ё ®зҐаҐ¤Ё Ўг¤гв
‘®¤Ґа¦ ЁҐ [ЏҐаўл©], ‘®¤Ґа¦ ЁҐ [ЏҐаўл© + 1],...,
‘®¤Ґа¦ ЁҐ [ЏҐаўл© + „«Ё - 1],
Ј¤Ґ б«®¦ҐЁҐ а бб¬ ваЁў Ґвбп Ї® ¬®¤г«о n. (ЏаҐ¤гЇаҐ¦¤ҐЁҐ. …б«Ё
ў¬Ґбв® нв®Ј® ўўҐбвЁ ЇҐаҐ¬ҐлҐ ЏҐаўл© Ё Џ®б«Ґ¤Ё©, ЇаЁЁ¬ ойЁҐ
§ зҐЁп ў ўлзҐв е Ї® ¬®¤г«о n, в® Їгбв п ®зҐаҐ¤м ¬®¦Ґв Ўлвм
бЇгв б ®зҐаҐ¤мо Ё§ n н«Ґ¬Ґв®ў.)
Њ®¤Ґ«Ёа®ў ЁҐ ®ЇҐа жЁ©:
‘¤Ґ« вм Џгбв®©:
„«Ё := 0;
ЏҐаўл© := 0;
„®Ў ўЁвм н«Ґ¬Ґв:
{„«Ё < n}
‘®¤Ґа¦ ЁҐ [(ЏҐаўл© + „«Ё ) mod n] := н«Ґ¬Ґв;
„«Ё := „«Ё + 1;
‚§пвм н«Ґ¬Ґв;
{„«Ё > 0}
н«Ґ¬Ґв := ‘®¤Ґа¦ ЁҐ [ЏҐаўл©];
ЏҐаўл© := (ЏҐаўл© + 1) mod n;
„«Ё := „«Ё - 1;
Џгбв = („«Ё = 0);
ЋзҐаҐ¤®© = ‘®¤Ґа¦ ЁҐ [ЏҐаўл©];
6.2.2. (‘®®ЎйЁ« Ђ.ѓ.ЉгиЁаҐЄ®) ЏаЁ¤г¬ вм бЇ®б®Ў ¬®¤Ґ«Ёа®-
ў Ёп ®зҐаҐ¤Ё б Ї®¬®ймо ¤ўге б⥪®ў (Ё дЁЄбЁа®ў ®Ј® зЁб« ЇҐ-
६Ґле вЁЇ T). ЏаЁ н⮬ ®ва Ў®вЄ n ®ЇҐа жЁ© б ®зҐаҐ¤мо ( -
з вле, Є®Ј¤ ®зҐаҐ¤м Ўл« Їгбв ) ¤®«¦ вॡ®ў вм Ї®ап¤Є n
¤Ґ©бвўЁ©.
ђҐиҐЁҐ. €ў аЁ в: б⥪Ё, б®бв ў«ҐлҐ Є®ж ¬Ё, ®Ўа §гов
®зҐаҐ¤м. (ЏҐаҐзЁб«пп н«Ґ¬Ґвл ®¤®Ј® б⥪ ўЈ«гЎм Ё § ⥬ н«Ґ-
¬Ґвл ўв®а®Ј® аг¦г, ¬л ЇҐаҐзЁб«пҐ¬ ўбҐ н«Ґ¬Ґвл ®зҐаҐ¤Ё ®в
ЇҐаў®Ј® ¤® Ї®б«Ґ¤ҐЈ®.) џб®, зв® ¤®Ў ў«ҐЁҐ бў®¤Ёвбп Є ¤®Ў ў«Ґ-
Ёо Є ®¤®¬г Ё§ б⥪®ў, Їа®ўҐаЄ Їгбв®вл - Є Їа®ўҐаЄҐ Їгбв®вл
®Ў®Ёе б⥪®ў. …б«Ё ¬л е®вЁ¬ ў§пвм н«Ґ¬Ґв, Ґбвм ¤ў б«гз п. …б«Ё
б⥪, Ј¤Ґ 室Ёвбп з «® ®зҐаҐ¤Ё, Ґ Їгбв, в® ЎҐаҐ¬ Ё§ ҐЈ®
н«Ґ¬Ґв. …б«Ё ® Їгбв, в® ЇаҐ¤ў аЁвҐ«м® ЇҐаҐЇЁблў Ґ¬ ў ҐЈ® ўбҐ
н«Ґ¬Ґвл ўв®а®Ј® б⥪ , ¬Ґпп Ї®а冷Є (нв® Їа®Ёб室Ёв б ¬® ЇаЁ
ЇҐаҐЄ« ¤лў ЁЁ Ё§ б⥪ ў б⥪) Ё бў®¤Ё¬ ¤Ґ«® Є ЇҐаў®¬г б«гз о.
•®вп зЁб«® ¤Ґ©бвўЁ© ЇаЁ н⮬ Ё Ґ ®Ја ЁзҐ® Є®бв в®©, ® ваҐ-
Ў®ў ЁҐ § ¤ зЁ ўлЇ®«Ґ®, в Є Є Є Є ¦¤л© н«Ґ¬Ґв ®зҐаҐ¤Ё ¬®¦Ґв
гз бвў®ў вм ў н⮬ Їа®жҐбᥠҐ Ў®«ҐҐ ®¤®Ј® а § .
6.2.3. „ҐЄ®¬ §лў ов бвагЄвгаг, б®зҐв ойго ®зҐаҐ¤м Ё б⥪:
Є« бвм Ё § ЎЁа вм н«Ґ¬Ґвл ¬®¦® б ®Ў®Ёе Є®ж®ў. Љ Є ॠ«Ё§®ў вм
¤ҐЄ ®Ја ЁзҐ®Ј® а §¬Ґа Ў §Ґ ¬ ббЁў в Є, зв®Ўл Є ¦¤ п ®ЇҐ-
а жЁп вॡ®ў « ®Ја ЁзҐ®Ј® зЁб« ¤Ґ©бвўЁ©?
6.2.4. (‘®®ЎйЁ« Ђ.ѓ.ЉгиЁаҐЄ®.) €¬ҐҐвбп ¤ҐЄ н«Ґ¬Ґв®ў вЁЇ
T Ё Є®Ґз®Ґ зЁб«® ЇҐаҐ¬Ґле вЁЇ T Ё 楫®Ј® вЁЇ . ‚ з «м®¬
б®бв®пЁЁ ў ¤ҐЄҐ ҐЄ®в®а®Ґ зЁб«® н«Ґ¬Ґв®ў. ‘®бв ўЁвм Їа®Ја ¬¬г,
Ї®б«Ґ ЁбЇ®«ҐЁп Є®в®а®© ў ¤ҐЄҐ ®бв «Ёбм Ўл ⥠¦Ґ б ¬лҐ н«Ґ¬Ґ-
вл, Ёе зЁб«® Ўл«® Ўл ў ®¤®© Ё§ 楫ле ЇҐаҐ¬Ґле.
“Є § ЁҐ. (1) ќ«Ґ¬Ґвл ¤ҐЄ ¬®¦® жЁЄ«ЁзҐбЄЁ ЇҐаҐбв ў«пвм,
§ ЎЁа п б ®¤®Ј® Є®ж Ё Ї®¬Ґй п ў ¤агЈ®©. Џ®б«Ґ нв®Ј®, ᤥ« ў
бв®«мЄ® ¦Ґ и Ј®ў ў ®Ўа ⮬ Їа ў«ҐЁЁ, ¬®¦® ўҐагвм ўбҐ
¬Ґбв®. (2) Љ Є Ї®пвм, Їа®и«Ё ¬л Ї®«л© ЄагЈ Ё«Ё Ґ Їа®и«Ё? …б«Ё
Ўл Ўл« Є Є®©-в® н«Ґ¬Ґв, § ўҐ¤®¬® ®вбгвбвўгойЁ© ў ¤ҐЄҐ, в® ¬®¦®
Ўл«® Ўл ҐЈ® Ї®¤бггвм Ё ¦¤ вм ўв®аЁз®Ј® Ї®пў«ҐЁп. Ќ® в ЄЁе
н«Ґ¬Ґв®ў Ґв. ‚¬Ґбв® нв®Ј® ¬®¦® ¤«п ¤ ®Ј® n ўлЇ®«Ёвм жЁЄ«Ё-
зҐбЄЁ© б¤ўЁЈ n ¤ў ¦¤л, Ї®¤бггў а §лҐ н«Ґ¬Ґвл, Ё Ї®б¬®в-
аҐвм, Ї®пўпвбп «Ё а §лҐ н«Ґ¬Ґвл зҐаҐ§ n и Ј®ў.
ЏаЁ¬ҐҐЁҐ ®зҐаҐ¤Ґ©.
6.2.5. Ќ ЇҐз в вм ў Ї®ап¤ЄҐ ў®§а бв Ёп ЇҐаўлҐ n вг-
а «мле зЁбҐ«, ў а §«®¦ҐЁҐ Є®в®але Їа®бвлҐ ¬®¦ЁвҐ«Ё ўе®¤пв
в®«мЄ® зЁб« 2, 3, 5.
ђҐиҐЁҐ. ‚ўҐ¤Ґ¬ ваЁ ®зҐаҐ¤Ё x2, x3, x5, ў Є®в®але Ўг¤Ґ¬
еа Ёвм н«Ґ¬Ґвл, Є®в®алҐ ў 2 (3, 5) а § Ў®«миҐ ЇҐз в ле, ®
ҐйҐ Ґ ЇҐз в лҐ. ЋЇаҐ¤Ґ«Ё¬ Їа®жҐ¤гаг
procedure ЇҐз в вм_Ё_¤®Ў ўЁвм (t: integer);
begin
| writeln (t);
| ¤®Ў ўЁвм (2*t, x2);
| ¤®Ў ўЁвм (3*t, x3);
| ¤®Ў ўЁвм (5*t, x5);
end;
‚®в б奬 Їа®Ја ¬¬л:
ЇҐз в вм_Ё_¤®Ў ўЁвм (1);
k := 1; { k - зЁб«® ЇҐз в ле }
{Ёў аЁ в: ЇҐз в ® ў Ї®ап¤ЄҐ ў®§а бв Ёп k ¬ЁЁ¬ «мле
з«Ґ®ў 㦮Ј® ¬®¦Ґбвў ; ў ®зҐаҐ¤пе н«Ґ¬Ґвл, ў¤ў®Ґ, ўв஥ Ё
ўЇпвҐа® Ў®«миЁҐ ЇҐз в ле, ® Ґ ЇҐз в лҐ, а бЇ®«®¦Ґ-
лҐ ў ў®§а бв о饬 Ї®ап¤ЄҐ}
while k <> n do begin
| x := min (®зҐаҐ¤®© (x2), ®зҐаҐ¤®© (x3), ®зҐаҐ¤®© (x5));
| ЇҐз в вм_Ё_¤®Ў ўЁвм (x);
| k := k+1;
| ...ў§пвм x Ё§ вҐе ®зҐаҐ¤Ґ©, Ј¤Ґ ® Ўл« ®зҐаҐ¤л¬;
end;
Џгбвм Ёў аЁ в ўлЇ®«пҐвбп. ђ бᬮваЁ¬ Ё¬ҐмиЁ© Ё§ Ґ -
ЇҐз в ле н«Ґ¬Ґв®ў ¬®¦Ґбвў . ’®Ј¤ ® ¤Ґ«Ёвбп 楫® ®¤®
Ё§ зЁбҐ« 2, 3, 5, Ё з б⮥ в Є¦Ґ ЇаЁ ¤«Ґ¦Ёв ¬®¦Ґбвўг. ‡ зЁв,
®® ЇҐз в ®. ‡ зЁв, x 室Ёвбп ў ®¤®© Ё§ ®зҐаҐ¤Ґ© Ё, б«Ґ-
¤®ў ⥫м®, пў«пҐвбп ў Ґ© ЇҐаўл¬ (¬ҐмиЁҐ ЇҐз в л, н«Ґ¬Ґ-
вл ®зҐаҐ¤Ґ© Ґ ЇҐз в л). Ќ ЇҐз в ў x, ¬л ¤®«¦л ҐЈ® Ё§кпвм Ё
¤®Ў ўЁвм ҐЈ® Єа влҐ.
„«Ёл ®зҐаҐ¤Ґ© Ґ ЇаҐў®б室пв зЁб« ЇҐз в ле н«Ґ¬Ґв®ў.
‘«Ґ¤гой п § ¤ з бўп§ б Ја д ¬Ё (Є Є®в®ал¬ ¬л ўҐас¬бп ў
Ј« ўҐ 9).
Џгбвм § ¤ ® Є®Ґз®Ґ ¬®¦Ґбвў®, н«Ґ¬Ґвл Є®в®а®Ј® §лў ов
ўҐаиЁ ¬Ё, в Є¦Ґ ҐЄ®в®а®Ґ ¬®¦Ґбвў® гЇ®а冷зҐле Ї а ўҐаиЁ,
§лў Ґ¬ле аҐЎа ¬Ё. ‚ н⮬ б«гз Ґ Ј®ў®апв, зв® § ¤ ®аЁҐвЁа®-
ў л© Ја д. Џ аг <p, q> §лў ов ॡ஬ б з «®¬ p Ё Є®ж®¬ q;
Ј®ў®апв в Є¦Ґ, зв® ®® ўл室Ёв Ё§ ўҐаиЁл p Ё ўе®¤Ёв ў ўҐаиЁг
q. ЋЎлз® ўҐаиЁл Ја д Ё§®Ўа ¦ ов в®зЄ ¬Ё, ॡа - бв५Є ¬Ё,
ўҐ¤гйЁ¬Ё Ё§ з « ў Є®Ґж. (‚ ᮮ⢥вбвўЁЁ б ®ЇаҐ¤Ґ«ҐЁҐ¬ Ё§
¤ ®© ўҐаиЁл ў ¤ го ўҐ¤Ґв Ґ Ў®«ҐҐ ®¤®Ј® ॡа ; ў®§¬®¦л
ॡа , г Є®в®але з «® б®ўЇ ¤ Ґв б Є®ж®¬.)
6.2.6. €§ўҐбв®, зв® ®аЁҐвЁа®ў л© Ја д бўп§Ґ, в. Ґ. Ё§
«оЎ®© ўҐаиЁл ¬®¦® Їа®©вЁ ў «оЎго Ї® аҐЎа ¬. Ља®¬Ґ в®Ј®, Ё§
Є ¦¤®© ўҐаиЁл ўл室Ёв бв®«мЄ® ¦Ґ ॡҐа, бЄ®«мЄ® ўе®¤Ёв. „®Є -
§ вм, зв® бгйҐбвўгҐв § ¬Єгвл© жЁЄ«, Їа®е®¤пйЁ© Ї® Є ¦¤®¬г ॡаг
а®ў® ®¤Ё а §. ‘®бв ўЁвм «Ј®аЁв¬ ®влбЄ Ёп в Є®Ј® жЁЄ« .
ђҐиҐЁҐ. ‡¬ҐҐ© Ўг¤Ґ¬ §лў вм ҐЇгбвго ®зҐаҐ¤м Ё§ ўҐаиЁ, ў
Є®в®а®© «оЎлҐ ¤ўҐ ўҐаиЁл ᮥ¤ЁҐл ॡ஬ Ја д ( з «®¬ пў«п-
Ґвбп в ўҐаиЁ , Є®в®а п Ў«Ё¦Ґ Є з «г ®зҐаҐ¤Ё). ‘в®пй п ў -
з «Ґ ®зҐаҐ¤Ё ўҐаиЁ Ўг¤Ґв еў®б⮬ §¬ҐЁ, Ї®б«Ґ¤пп - Ј®«®ў®©. Ќ
аЁбгЄҐ §¬Ґп Ё§®Ўа §Ёвбп ў ўЁ¤Ґ 楯Ё ॡҐа Ја д , бв५ЄЁ ўҐ¤гв
®в еў®бв Є Ј®«®ўҐ. „®Ў ў«ҐЁҐ ўҐаиЁл ў ®зҐаҐ¤м ᮮ⢥вбвўгҐв
а®бвг §¬ҐЁ б Ј®«®ўл, ў§пвЁҐ ўҐаиЁл - ®в१ Ёо Є®зЁЄ еў®бв .
‚ з «Ґ §¬Ґп б®бв®Ёв Ё§ Ґ¤Ёб⢥®© ўҐаиЁл. „ «ҐҐ ¬л б«Ґ-
¤гҐ¬ в Є®¬г Їа ўЁ«г:
while §¬Ґп ўЄ«оз Ґв Ґ ўбҐ ॡа do begin
| if Ё§ Ј®«®ўл ўл室Ёв ҐЁбЇ®«м§®ў ®Ґ ў §¬ҐҐ ॡ஠then begin
| | 㤫ЁЁвм §¬Ґо нвЁ¬ ॡ஬
| end else begin
| | {еў®бв §¬ҐЁ ў в®© ¦Ґ ўҐаиЁҐ, зв® Ё Ј®«®ў }
| | ®в१ вм Є®Ґж еў®бв Ё ¤®Ў ўЁвм ҐЈ® Є Ј®«®ўҐ
| | {"§¬Ґп ®вЄгблў Ґв Є®Ґж еў®бв "}
| end;
end;
„®Є ¦Ґ¬, зв® ¬л ¤®бвЁЈҐ¬ 楫Ё.
1) €¤п Ї® §¬ҐҐ ®в еў®бв Є Ј®«®ўҐ, ¬л ўе®¤Ё¬ ў Є ¦¤го ўҐа-
иЁг бв®«мЄ® ¦Ґ а §, бЄ®«мЄ® ўл室Ё¬. ’ Є Є Є ў «оЎго ўҐаиЁг
ўе®¤Ёв бв®«мЄ® ¦Ґ ॡҐа, бЄ®«мЄ® ўл室Ёв, в® Ґў®§¬®¦®бвм ўл©вЁ
®§ з Ґв, зв® ¬л з «Ё ¤ўЁ¦ҐЁҐ ў нв®© ¦Ґ в®зЄҐ.
2) ‡¬Ґп Ґ гЄ®а зЁў Ґвбп, Ї®н⮬㠫ЁЎ® ® ®еў влў Ґв ўбҐ
ॡа , «ЁЎ®, зЁ п б ҐЄ®в®а®Ј® ¬®¬Ґв , Ўг¤Ґв Ё¬Ґвм Ї®бв®п-
го ¤«Ёг. ‚® ўв®а®¬ б«гз Ґ §¬Ґп Ўг¤Ґв ЎҐбЄ®Ґз® "бЄ®«м§Ёвм Ї®
ᥡҐ". ќв® ў®§¬®¦®, в®«мЄ® Ґб«Ё Ё§ ўбҐе ўҐаиЁ §¬ҐЁ Ґ ўл室Ёв
ҐЁбЇ®«м§®ў ле ॡҐа. €§ бўп§®бвЁ б«Ґ¤гҐв, зв® ЁбЇ®«м§®ў л
ўбҐ ॡа .
‡ ¬Ґз ЁҐ Ї® ॠ«Ё§ жЁЁ Ї бЄ «Ґ. ‚ҐаиЁ ¬Ё Ја д Ўг¤Ґ¬
бзЁв вм зЁб« 1..n. „«п Є ¦¤®© ўҐаиЁл i Ўг¤Ґ¬ еа Ёвм зЁб«®
Out[i] ўл室пйЁе Ё§ ҐҐ ॡҐа, в Є¦Ґ ®¬Ґа Num[i][1],...,
Num[i][Out[i]] вҐе ўҐаиЁ, Єг¤ нвЁ аҐЎа ўҐ¤гв. ‚ Їа®жҐббҐ
Ї®бв஥Ёп §¬ҐЁ Ўг¤Ґв ўлЎЁа вм ЇҐаў®Ґ бў®Ў®¤®Ґ ॡа®. ’®Ј¤
¤®бв в®з® Ўг¤Ґв еа Ёвм ¤«п Є ¦¤®© ўҐаиЁл зЁб«® ўл室пйЁе Ё§
ҐҐ ЁбЇ®«м§®ў ле ॡҐа - нв® Ўг¤гв ॡа , Ё¤гйЁҐ ў з «Ґ
бЇЁбЄ .
6.2.7. „®Є § вм, зв® ¤«п ўбпЄ®Ј® n бгйҐбвўгҐв Ї®б«Ґ¤®ў -
⥫м®бвм г«Ґ© Ё Ґ¤ЁЁж ¤«Ёл (2 ў б⥯ҐЁ n) б® б«Ґ¤гойЁ¬
бў®©бвў®¬: Ґб«Ё "ᢥагвм ҐҐ ў Є®«мж®" Ё а бᬮваҐвм ўбҐ да Ј-
¬Ґвл ¤«Ёл n (Ёе зЁб«® а ў® (2 ў б⥯ҐЁ n)), в® ¬л Ї®«гзЁ¬
ўбҐ ў®§¬®¦лҐ Ї®б«Ґ¤®ў ⥫м®бвЁ г«Ґ© Ё Ґ¤ЁЁж ¤«Ёл n. Џ®бва®-
Ёвм «Ј®аЁв¬ ®влбЄ Ёп в Є®© Ї®б«Ґ¤®ў ⥫м®бвЁ, вॡгойЁ© Ґ
Ў®«ҐҐ (C ў б⥯ҐЁ n) ¤Ґ©бвўЁ© ¤«п ҐЄ®в®а®© Є®бв вл C.
“Є § ЁҐ. ђ бᬮваЁ¬ Ја д, ўҐаиЁ ¬Ё Є®в®а®Ј® пў«повбп Ї®б-
«Ґ¤®ў ⥫м®бвЁ г«Ґ© Ё Ґ¤ЁЁж ¤«Ёл (n-1). Ѓг¤Ґ¬ бзЁв вм, зв®
Ё§ ўҐаиЁл x ўҐ¤Ґв ॡ஠ў ўҐаиЁг y, Ґб«Ё x ¬®¦Ґв Ўлвм з «®¬,
y - Є®ж®¬ ҐЄ®в®а®© Ї®б«Ґ¤®ў ⥫м®бвЁ ¤«Ёл n. ’®Ј¤ Ё§ Є ¦-
¤®© ўҐаиЁл ўе®¤Ёв Ё ўл室Ёв ¤ў ॡа . –ЁЄ«, Їа®е®¤пйЁ© Ї® ўбҐ¬
аҐЎа ¬, Ё ¤ бв вॡ㥬го Ї®б«Ґ¤®ў ⥫м®бвм.
6.2.8. ђҐ «Ё§®ў вм k ®зҐаҐ¤Ґ© б ®Ја ЁзҐ®© б㬬 а®© ¤«Ё-
®© n, ЁбЇ®«м§гп Ї ¬пвм Ї®ап¤Є n+k, ЇаЁзҐ¬ Є ¦¤ п ®ЇҐа жЁп
(Єа®¬Ґ з «м®©, ¤Ґ« о饩 ўбҐ ®зҐаҐ¤Ё Їгбвл¬Ё) ¤®«¦ вॡ®ў вм
®Ја ЁзҐ®Ј® Є®бв в®© зЁб« ¤Ґ©бвўЁ©.
ђҐиҐЁҐ. „Ґ©бвўгҐ¬ «®ЈЁз® ббл«®з®© ॠ«Ё§ жЁЁ б⥪®ў:
¬л Ї®¬Ё¬ (¤«п Є ¦¤®© ®зҐаҐ¤Ё) ЇҐаў®Ј®, Є ¦¤л© з«Ґ ®зҐаҐ¤Ё Ї®¬-
Ёв б«Ґ¤го饣® § Ё¬ (¤«п Ї®б«Ґ¤ҐЈ® бзЁв Ґвбп, зв® § Ё¬ бв®-
Ёв дЁЄвЁўл© н«Ґ¬Ґв б ®¬Ґа®¬ 0). Ља®¬Ґ в®Ј®, ¬л ¤®«¦л ¤«п
Є ¦¤®© ®зҐаҐ¤Ё § вм Ї®б«Ґ¤ҐЈ® (Ґб«Ё ® Ґбвм) - Ё зҐ Ґ
г¤ бвбп ¤®Ў ў«пвм. Љ Є Ё ¤«п б⥪®ў, ®в¤Ґ«м® Ґбвм 楯м бў®Ў®¤-
ле п祥Є. ‡ ¬ҐвЁ¬, зв® ¤«п Їгбв®© ®зҐаҐ¤Ё Ёд®а¬ жЁп ® Ї®б«Ґ¤-
Ґ¬ н«Ґ¬ҐвҐ вҐапҐв б¬лб« - ® ® Ё Ґ ЁбЇ®«м§гҐвбп ЇаЁ ¤®Ў ў-
«ҐЁЁ.
‘®¤Ґа¦ ЁҐ: array [1..n] of T;
‘«Ґ¤гойЁ©: array [1..n] of 0..n;
ЏҐаўл©: array [1..n] of 0..n;
Џ®б«Ґ¤Ё©: array [1..k] of 0..n;
‘ў®Ў®¤ п : 0..n;
procedure ‘¤Ґ« вм_Їгбвл¬;
| var i: integer;
begin
| for i := 1 to n-1 do begin
| | ‘«Ґ¤гойЁ© [i] := i + 1;
| end;
| ‘ў®Ў®¤ п := 1;
| for i := 1 to k do begin
| | ЏҐаўл© [i]:=0;
| end;
end;
function …бвм_¬Ґбв® : boolean;
begin
| …бвм_¬Ґбв® := ‘ў®Ў®¤ п <> 0;
end;
function Џгбв (®¬Ґа_®зҐаҐ¤Ё: integer): boolean;
begin
| Џгбв := ЏҐаўл© [®¬Ґа_®зҐаҐ¤Ё] = 0;
end;
procedure ‚§пвм (var t: T; ®¬Ґа_®зҐаҐ¤Ё: integer);
| var ЇҐаў: integer;
begin
| {not Џгбв (®¬Ґа_®зҐаҐ¤Ё)}
| ЇҐаў := ЏҐаўл© [®¬Ґа_®зҐаҐ¤Ё];
| t := ‘®¤Ґа¦ ЁҐ [ЇҐаў]
| ЏҐаўл© [®¬Ґа_®зҐаҐ¤Ё] := ‘«Ґ¤гойЁ© [ЇҐаў];
| ‘«Ґ¤гойЁ© [ЇҐаў] := ‘ў®Ў®¤ п;
| ‘ў®Ў®¤ п := ЏҐаў;
end;
procedure „®Ў ўЁвм (t: T; ®¬Ґа_®зҐаҐ¤Ё: integer);
| var ®ў, Ї®б«: 1..n;
begin
| {…бвм_бў®Ў®¤®Ґ_¬Ґбв® }
| ®ў := ‘ў®Ў®¤ п; ‘ў®Ў®¤ п := ‘«Ґ¤гойЁ© [‘ў®Ў®¤ п];
| {Ё§ бЇЁбЄ бў®Ў®¤®Ј® ¬Ґбв Ё§кпв ®¬Ґа ®ў}
| if Џгбв (®¬Ґа_®зҐаҐ¤Ё) then begin
| | ЏҐаўл© [®¬Ґа_®зҐаҐ¤Ё] := ®ў;
| | Џ®б«Ґ¤Ё© [®¬Ґа_®зҐаҐ¤Ё] := ®ў;
| | ‘«Ґ¤гойЁ© [®ў] := 0;
| | ‘®¤Ґа¦ ЁҐ [®ў] := t;
| end else begin
| | Ї®б« := Џ®б«Ґ¤Ё© [®¬Ґа_®зҐаҐ¤Ё];
| | {‘«Ґ¤гойЁ© [Ї®б«] = 0 }
| | ‘«Ґ¤гойЁ© [Ї®б«] := ®ў;
| | ‘«Ґ¤гойЁ© [®ў] := 0;
| | ‘®¤Ґа¦ ЁҐ [®ў] := t
| | Џ®б«Ґ¤Ё© [®¬Ґа_®зҐаҐ¤Ё] := ®ў;
| end;
end;
function ЋзҐаҐ¤®© (®¬Ґа_®зҐаҐ¤Ё: integer): T;
begin
| ЋзҐаҐ¤®© := ‘®¤Ґа¦ ЁҐ [ЏҐаўл© [®¬Ґа_®зҐаҐ¤Ё]];
end;
6.2.9. ’ ¦Ґ § ¤ з ¤«п ¤ҐЄ®ў ў¬Ґбв® ®зҐаҐ¤Ґ©.
“Є § ЁҐ. „ҐЄ - бвагЄвга бЁ¬¬ҐваЁз п, Ї®н⮬㠤® еа -
Ёвм ббл«ЄЁ ў ®ЎҐ бв®а®л (ўЇҐаҐ¤ Ё § ¤). ЏаЁ н⮬ 㤮Ў® Є
Є ¦¤®¬г ¤ҐЄг ¤®Ў ўЁвм дЁЄвЁўл© н«Ґ¬Ґв, § ¬Єгў ҐЈ® ў Є®«мж®, Ё
в®з® в Є®Ґ ¦Ґ Є®«мж® ®Ўа §®ў вм Ё§ бў®Ў®¤ле Ї®§ЁжЁ©.
‚ б«Ґ¤го饩 § ¤ зҐ ¤ҐЄ ЁбЇ®«м§гҐвбп ¤«п еа ҐЁп ўҐаиЁ ўл-
ЇгЄ«®Ј® ¬®Ј®гЈ®«мЁЄ .
6.2.10. Ќ Ї«®бЄ®бвЁ § ¤ ® n в®зҐЄ, Їа®г¬Ґа®ў ле б«Ґў
Їа ў® ( ЇаЁ а ўле ЎбжЁбб е - бЁ§г ўўҐае). ‘®бв ўЁвм Їа®Ј-
а ¬¬г, Є®в®а п бва®Ёв ¬®Ј®гЈ®«мЁЄ, пў«пойЁ©бп Ёе ўлЇгЄ«®© ®Ў®-
«®зЄ®©, § Ґ Ў®«ҐҐ 祬 C*n ¤Ґ©бвўЁ©.
ђҐиҐЁҐ. Ѓг¤Ґ¬ ЇаЁб®Ґ¤Ёпвм в®зЄЁ Є ўлЇгЄ«®© ®Ў®«®зЄҐ ®¤
§ ¤агЈ®©. ‹ҐЈЄ® Ї®Є § вм, зв® Ї®б«Ґ¤пп ЇаЁб®Ґ¤ЁҐ п в®зЄ
Ўг¤Ґв ®¤®© Ё§ ўҐаиЁ ўлЇгЄ«®© ®Ў®«®зЄЁ. ќвг ўҐаиЁг ¬л Ўг¤Ґ¬
§лў вм ўл¤Ґ«Ґ®©. ЋзҐаҐ¤ п ЇаЁб®Ґ¤ЁпҐ¬ п в®зЄ ўЁ¤ Ё§ ўл-
¤Ґ«Ґ®© (Ї®зҐ¬г?). „®Ї®«Ё¬ и ¬®Ј®гЈ®«мЁЄ, ўлЇгбвЁў Ё§ ўл-
¤Ґ«Ґ®© ўҐаиЁл "ЁЈ«г", ўҐ¤гйго ў ЇаЁб®Ґ¤ЁпҐ¬го в®зЄг. Џ®«г-
зЁвбп ўл஦¤Ґл© ¬®Ј®гЈ®«мЁЄ, Ё ®бв Ґвбп «ЁЄўЁ¤Ёа®ў вм ў Ґ¬
"ўЇгЄ«®бвЁ".
[ђЁбг®Є]
Ѓг¤Ґ¬ еа Ёвм ўҐаиЁл ¬®Ј®гЈ®«мЁЄ ў ¤ҐЄҐ ў Ї®ап¤ЄҐ ®Ўе®-
¤ ҐЈ® ЇҐаЁ¬Ґва Ї® з б®ў®© бв५ЄҐ. ЏаЁ н⮬ ўл¤Ґ«Ґ п ўҐаиЁ
пў«пҐвбп з «®¬ Ё Є®ж®¬ (Ј®«®ў®© Ё еў®б⮬) ¤ҐЄ . ЏаЁб®Ґ¤ЁҐ-
ЁҐ "ЁЈ«л" ⥯Ґам б®бв®Ёв ў ¤®Ў ў«ҐЁЁ ЇаЁб®Ґ¤ЁпҐ¬®© ўҐаиЁл ў
Ј®«®ўг Ё ў еў®бв ¤ҐЄ . “бва ҐЁҐ ўЇгЄ«®б⥩ ҐбЄ®«мЄ® Ў®«ҐҐ
б«®¦®. Ќ §®ўҐ¬ Ї®¤еў®б⮬ Ё Ї®¤Ї®¤еў®б⮬ н«Ґ¬Ґвл ¤ҐЄ , бв®-
пйЁҐ § ҐЈ® еў®б⮬. “бва ҐЁҐ ўЇгЄ«®бвЁ г еў®бв ¤Ґ« Ґвбп в Є:
while Ї® ¤®а®ЈҐ Ё§ еў®бв ў Ї®¤Ї®¤еў®бв ¬л Ї®ў®а зЁў Ґ¬
| г Ї®¤еў®бв ў«Ґў® ("ўЇгЄ«®бвм") do begin
| ўлЄЁгвм Ї®¤еў®бв Ё§ ¤ҐЄ
end
’ ЄЁ¬ ¦Ґ бЇ®б®Ў®¬ гбва пҐвбп ўЇгЄ«®бвм г Ј®«®ўл ¤ҐЄ .
‡ ¬Ґз ЁҐ. „Ґ©бвўЁп б Ї®¤еў®б⮬ Ё Ї®¤Ї®¤еў®б⮬ Ґ ўе®¤пв ў
®ЇаҐ¤Ґ«ҐЁҐ ¤ҐЄ , ®¤ Є® бў®¤пвбп Є ҐЎ®«м讬г зЁб«г ¬ ЁЇг«пжЁ©
б ¤ҐЄ®¬ ( ¤® § Ўа вм ваЁ н«Ґ¬Ґв б еў®бв , ᤥ« вм зв® ¤® Ё
ўҐагвм).
…йс ®¤® § ¬Ґз ЁҐ. …бвм ¤ў ўл஦¤Ґле б«гз п: Ґб«Ё ¬л ў®-
®ЎйҐ Ґ Ї®ў®а зЁў Ґ¬ г Ї®еў®бв (в.Ґ. ваЁ б®бҐ¤ЁҐ ўҐаиЁл «Ґ¦ в
®¤®© Їаאַ©) Ё Ґб«Ё ¬л Ї®ў®а зЁў Ґ¬ 180 Ја ¤гб®ў (в Є Ўл-
ў Ґв, Ґб«Ё и ¬®Ј®гЈ®«мЁЄ Ґбвм ¤ўггЈ®«мЁЄ). ‚ ЇҐаў®¬ б«гз Ґ
Ї®¤еў®бв бв®Ёв г¤ «Ёвм (зв®Ўл ў ўлЇгЄ«®© ®Ў®«®зЄҐ Ґ Ўл«® «ЁиЁе
ўҐаиЁ), ў® ўв®а®¬ б«гз Ґ - ®Ўп§ вҐ«м® ®бв ўЁвм.
6.3. Њ®¦Ґбвў .
Џгбвм ’ - ҐЄ®в®ал© вЁЇ. ‘гйҐбвўгҐв ¬®Ј® бЇ®б®Ў®ў еа Ёвм
(Є®ҐзлҐ) ¬®¦Ґбвў н«Ґ¬Ґв®ў вЁЇ ’; ўлЎ®а ¬Ґ¦¤г Ё¬Ё ®ЇаҐ¤Ґ-
«пҐвбп вЁЇ®¬ T Ё Ў®а®¬ вॡ㥬ле ®ЇҐа жЁ©.
Џ®¤¬®¦Ґбвў ¬®¦Ґбвў {1..n}.
6.3.1. €бЇ®«м§гп Ї ¬пвм, Їа®Ї®ажЁ® «мго n, еа Ёвм
Ї®¤¬®¦Ґбвў ¬®¦Ґбвў {1..n}.
ЋЇҐа жЁЁ —Ёб«® ¤Ґ©бвўЁ©
‘¤Ґ« вм Їгбвл¬ C*n
Џа®ўҐаЁвм ЇаЁ ¤«Ґ¦®бвм C
„®Ў ўЁвм C
“¤ «Ёвм ‘
ЊЁЁ¬ «мл© н«Ґ¬Ґв C*n
Џа®ўҐаЄ Їгбв®вл C*n
ђҐиҐЁҐ. •а Ё¬ ¬®¦Ґбвў® Є Є array [1..n] of boolean.
6.3.2. ’® ¦Ґ, ® Їа®ўҐаЄ Їгбв®вл ¤®«¦ ўлЇ®«пвмбп §
ўаҐ¬п C.
ђҐиҐЁҐ. •а Ё¬ ¤®Ї®«ЁвҐ«м® Є®«ЁзҐбвў® н«Ґ¬Ґв®ў.
6.3.3. ’® ¦Ґ ЇаЁ б«Ґ¤гойЁе ®Ја ЁзҐЁпе зЁб«® ¤Ґ©бвўЁ©:
ЋЇҐа жЁЁ —Ёб«® ¤Ґ©бвўЁ©
‘¤Ґ« вм Їгбвл¬ C*n
Џа®ўҐаЁвм ЇаЁ ¤«Ґ¦®бвм C
„®Ў ўЁвм C
“¤ «Ёвм C*n
ЊЁЁ¬ «мл© н«Ґ¬Ґв C
Џа®ўҐаЄ Їгбв®вл C
ђҐиҐЁҐ. „®Ї®«ЁвҐ«м® еа Ё¬ ¬ЁЁ¬ «мл© н«Ґ¬Ґв ¬®-
¦Ґбвў .
6.3.4 ’® ¦Ґ ЇаЁ б«Ґ¤гойЁе ®Ја ЁзҐЁпе зЁб«® ¤Ґ©бвўЁ©:
ЋЇҐа жЁЁ —Ёб«® ¤Ґ©бвўЁ©
‘¤Ґ« вм Їгбвл¬ ‘*n
Џа®ўҐаЁвм ЇаЁ ¤«Ґ¦®бвм ‘
„®Ў ўЁвм ‘*n
“¤ «Ёвм ‘
ЊЁЁ¬ «мл© н«Ґ¬Ґв ‘
Џа®ўҐаЄ Їгбв®вл C
ђҐиҐЁҐ. •а Ё¬ ¬ЁЁ¬ «мл©, ¤«п Є ¦¤®Ј® - б«Ґ¤гойЁ© Ё
ЇаҐ¤л¤гйЁ© Ї® ўҐ«ЁзЁҐ.
Њ®¦Ґб⢠楫ле зЁбҐ«.
‚ б«Ґ¤гойЁе § ¤ з е ўҐ«ЁзЁ н«Ґ¬Ґв®ў ¬®¦Ґбвў Ґ ®Ја Ё-
зҐ , ® Ёе Є®«ЁзҐбвў® Ґ ЇаҐў®б室Ёв n.
6.3.5. Џ ¬пвм C*n.
ЋЇҐа жЁЁ —Ёб«® ¤Ґ©бвўЁ©
‘¤Ґ« вм Їгбвл¬ C
—Ёб«® н«Ґ¬Ґв®ў C
Џа®ўҐаЁвм ЇаЁ ¤«Ґ¦®бвм C*n
„®Ў ўЁвм ®ўл©
(§ ўҐ¤®¬® ®вбгвбвўгойЁ©) C
“¤ «Ёвм C*n
ЊЁЁ¬ «мл© н«Ґ¬Ґв C*n
‚§пвм Є Є®©-в® н«Ґ¬Ґв C
ђҐиҐЁҐ. Њ®¦Ґбвў® ЇаҐ¤бв ў«пҐ¬ б Ї®¬®ймо ЇҐаҐ¬Ґле
a:array [1..n] of integer, k: 0..n; ¬®¦Ґбвў® ᮤҐа¦Ёв k н«Ґ¬Ґ-
в®ў a[1],...,a[k]; ўбҐ ®Ё а §«Ёзл. Џ® бгйҐбвўг ¬л еа Ё¬ н«Ґ-
¬Ґвл ¬®¦Ґбвў ў б⥪Ґ (ЎҐ§ Ї®ўв®аҐЁ©).
6.3.6. Џ ¬пвм C*n.
ЋЇҐа жЁЁ —Ёб«® ¤Ґ©бвўЁ©
‘¤Ґ« вм Їгбвл¬ C
Џа®ўҐаЁвм Їгбв®вг C
Џа®ўҐаЁвм ЇаЁ ¤«Ґ¦®бвм C*(log n)
„®Ў ўЁвм ‘*n
“¤ «Ёвм C*n
ЊЁЁ¬ «мл© н«Ґ¬Ґв ‘
ђҐиҐЁҐ. ‘¬. аҐиҐЁҐ ЇаҐ¤л¤г饩 § ¤ зЁ б ¤®Ї®«ЁвҐ«мл¬ гб-
«®ўЁҐ¬ a[1] < ... < a[k]. ЏаЁ Їа®ўҐаЄҐ ЇаЁ ¤«Ґ¦®бвЁ ЁбЇ®«м§гҐ¬
¤ў®Ёзл© Ї®ЁбЄ.
‚ б«Ґ¤го饩 § ¤ зҐ Ї®«Ґ§® Є®¬ЎЁЁа®ў вм а §лҐ бЇ®б®Ўл.
6.3.7. €бЇ®«м§гп ®ЇЁб ®Ґ ў ЇаҐ¤л¤г饩 § ¤ зҐ ЇаҐ¤бв ў«Ґ-
ЁҐ ¬®¦Ґбвў, ©вЁ ўбҐ ўҐаиЁл ®аЁҐвЁа®ў ®Ј® Ја д , ¤®бвгЇ-
лҐ Ё§ ¤ ®© Ї® аҐЎа ¬. (‚ҐаиЁл бзЁв Ґ¬ зЁб« ¬Ё 1..n.) ‚६п
Ґ Ў®«миҐ C * (®ЎйҐҐ зЁб«® ॡҐа, ўл室пйЁе Ё§ ¤®бвгЇле ўҐа-
иЁ).
ђҐиҐЁҐ. („агЈ®Ґ аҐиҐЁҐ ᬮваЁ ў Ј« ўҐ ® ४габЁЁ.) Џгбвм
num[i] - зЁб«® ॡҐа, ўл室пйЁе Ё§ i, out[i][1], ...,
out[i][num[i]] - ўҐаиЁл, Єг¤ ўҐ¤гв ॡа .
procedure „®бвгЇлҐ (i: integer);
| { ЇҐз в вм ўбҐ ўҐаиЁл, ¤®бвгЇлҐ Ё§ i, ўЄ«оз п i}
| var X: Ї®¤¬®¦Ґбвў® 1..n;
| P: Ї®¤¬®¦Ґбвў® 1..n;
| q, v, w: 1..n;
| k: integer;
begin
| ...ᤥ« вм X, P Їгбвл¬Ё;
| writeln (i);
| ...¤®Ў ўЁвм i Є X, P;
| {(1) P = ¬®¦Ґбвў® ЇҐз в ле ўҐаиЁ; P ᮤҐа¦Ёв i;
| (2) ЇҐз в л в®«мЄ® ¤®бвгЇлҐ Ё§ i ўҐаиЁл;
| (3) X - Ї®¤¬®¦Ґбвў® P;
| (4) ўбҐ ЇҐз в лҐ ўҐаиЁл, Ё§ Є®в®але ўл室Ёв
| ॡ஠ў Ґ ЇҐз в го ўҐаиЁг, ЇаЁ ¤«Ґ¦ в X}
| while X ҐЇгбв® do begin
| | ...ў§пвм Є Є®©-ЁЎг¤м н«Ґ¬Ґв X ў v;
| | for k := 1 to num [v] do begin
| | | w := out [v][k];
| | | if w Ґ ЇаЁ ¤«Ґ¦Ёв P then begin
| | | | writeln (w);
| | | | ¤®Ў ўЁвм w ў P;
| | | | ¤®Ў ўЁвм w ў X
| | | end;
| | end;
| end;
end;
‘ў®©бвў® (1) Ґ аги Ґвбп, в Є Є Є ЇҐз вм Їа®Ёб室Ёв ®¤-
®ўаҐ¬Ґ® б ¤®Ў ў«ҐЁҐ¬ ў P. ‘ў®©бвў (2): а § v Ўл«® ў X, в® v
¤®бвгЇ®, Ї®н⮬г w ¤®бвгЇ®. ‘ў®©бвў® (3) ®зҐўЁ¤®. ‘ў®©бвў®
(4): ¬л г¤ «Ё«Ё Ё§ X н«Ґ¬Ґв v, ® ўбҐ ўҐаиЁл, Єг¤ Ё§ v Ё¤гв
ॡа , ЇҐаҐ¤ нвЁ¬ ЇҐз в л.
ЋжҐЄ ўаҐ¬ҐЁ а Ў®вл. ‡ ¬ҐвЁ¬, зв® Ё§кпвлҐ Ё§ X н«Ґ¬Ґвл
Ў®«миҐ вг¤ Ґ ¤®Ў ў«повбп, в Є Є Є ®Ё ў ¬®¬Ґв Ё§кпвЁп (Ё,
б«Ґ¤®ў ⥫м®, ўбҐЈ¤ Ї®§¦Ґ) ЇаЁ ¤«Ґ¦ в P, ¤®Ў ў«повбп в®«мЄ®
н«Ґ¬Ґвл Ґ Ё§ P. Џ®н⮬г жЁЄ« while ўлЇ®«пҐвбп Ґ Ў®«ҐҐ, 祬
Ї® а §г, ¤«п ўбҐе ¤®бвгЇле ўҐаиЁ, жЁЄ« for ўлЇ®«пҐвбп
бв®«мЄ® а §, бЄ®«мЄ® Ё§ ўҐаиЁл ўл室Ёв ॡҐа.
„«п X ¤® ЁбЇ®«м§®ў вм ЇаҐ¤бв ў«ҐЁҐ б® б⥪®¬ Ё«Ё ®зҐ-
।мо (б¬. ўлиҐ), ¤«п P - Ўг«ҐўбЄЁ© ¬ ббЁў.
6.3.8. ђҐиЁвм ЇаҐ¤л¤гйго § ¤ зг, Ґб«Ё вॡгҐвбп, зв®Ўл ¤®б-
вгЇлҐ ўҐаиЁл ЇҐз в «Ёбм ў в Є®¬ Ї®ап¤ЄҐ: б з « § ¤ п ўҐа-
иЁ , Ї®в®¬ ҐҐ б®бҐ¤Ё, Ї®в®¬ б®бҐ¤Ё б®бҐ¤Ґ© (ҐйҐ Ґ ЇҐз в -
лҐ) Ё в.¤.
“Є § ЁҐ. ’ Є Ї®«гзЁвбп, Ґб«Ё ЁбЇ®«м§®ў вм ®зҐаҐ¤м ў ЇаЁўҐ-
¤Ґ®¬ ўлиҐ аҐиҐЁЁ: ¤®Є ¦ЁвҐ Ё¤гЄжЁҐ© Ї® k, зв® бгйҐбвўгҐв ¬®-
¬Ґв, ў Є®в®ал© ЇҐз в л ўбҐ ўҐаиЁл а ббв®пЁЁ Ґ Ў®«миҐ
k, ў ®зҐаҐ¤Ё 室пвбп ўбҐ ўҐаиЁл, г¤ «ҐлҐ а®ў® k.
Ѓ®«ҐҐ б«®¦лҐ бЇ®б®Ўл ЇаҐ¤бв ў«ҐЁп ¬®¦Ґбвў Ўг¤гв а §®Ўа л ў
Ј« ў е 11 (•ҐиЁа®ў ЁҐ) Ё 12 („ҐаҐўмп).
6.4. ђ §лҐ § ¤ зЁ.
6.4.1. ђҐ «Ё§®ў вм бвагЄвгаг ¤ ле, Є®в®а п Ё¬ҐҐв ўбҐ вҐ
¦Ґ ®ЇҐа жЁЁ, зв® ¬ ббЁў ¤«Ёл n, Ё¬Ґ®
з вм а Ў®вг
Ї®«®¦Ёвм ў i-о п祩Єг зЁб«® n
г§ вм, зв® «Ґ¦Ёв ў i-®© п祩ЄҐ
в Є¦Ґ ®ЇҐа жЁо "гЄ § вм ®¬Ґа ¬ЁЁ¬ «м®Ј® н«Ґ¬Ґв " (Ё«Ё ®¤-
®Ј® Ё§ ¬ЁЁ¬ «мле н«Ґ¬Ґв®ў). Љ®«ЁзҐбвў® ¤Ґ©бвўЁ© ¤«п ўбҐе
®ЇҐа жЁ© ¤®«¦® Ўлвм Ґ Ў®«ҐҐ C*log n, Ґ бзЁв п ®ЇҐа жЁЁ " -
з вм а Ў®вг" (Є®в®а п вॡгҐв Ґ Ў®«ҐҐ C*n ¤Ґ©бвўЁ©).
ђҐиҐЁҐ. €бЇ®«м§гҐвбп ЇаЁҐ¬, Ё§«®¦Ґл© ў а §¤Ґ«Ґ ® б®авЁ-
а®ўЄҐ ¤ҐаҐў®¬. €¬Ґ®, ¤бва®Ё¬ ¤ н«Ґ¬Ґв ¬Ё ¬ ббЁў Є Є ¤
«Ёбвмп¬Ё ¤ў®Ёз®Ґ ¤ҐаҐў®, ў Є ¦¤®© ўҐаиЁҐ Є®в®а®Ј® еа Ё¬ ¬ЁЁ-
¬г¬ н«Ґ¬Ґв®ў ᮮ⢥вбвўго饣® Ї®¤¤ҐаҐў . Љ®а४вЁа®ўЄ нв®© Ё-
д®а¬ жЁЁ, в Є¦Ґ Їа®б«Ґ¦Ёў ЁҐ ЇгвЁ Ё§ Є®ап Є ¬ЁЁ¬ «м®¬г
н«Ґ¬Ґвг вॡгов «®Ј аЁд¬ЁзҐбЄ®Ј® зЁб« ¤Ґ©бвўЁ©.
6.4.2. ЏаЁ®аЁвҐв п ®зҐаҐ¤м - нв® ®зҐаҐ¤м, ў Є®в®а®© ў ¦®
Ґ в®, Єв® ўбв « Ї®б«Ґ¤Ё¬ (Ї®а冷Є Ї®¬ҐйҐЁп ў ҐҐ Ґ ЁЈа Ґв
а®«Ё), Єв® Ј« ўҐҐ. Ѓ®«ҐҐ в®з®, ЇаЁ Ї®¬ҐйҐЁЁ ў ®зҐаҐ¤м гЄ -
§лў Ґвбп ЇаЁ®аЁвҐв Ї®¬Ґй Ґ¬®Ј® ®ЎкҐЄв (Ўг¤Ґ¬ бзЁв вм ЇаЁ®аЁвҐвл
楫묨 зЁб« ¬Ё), ЇаЁ ў§пвЁЁ Ё§ ®зҐаҐ¤Ё ўлЎЁа Ґвбп н«Ґ¬Ґв б
ЁЎ®«миЁ¬ ЇаЁ®аЁвҐв®¬ (Ё«Ё ®¤Ё Ё§ в ЄЁе н«Ґ¬Ґв®ў). ђҐ «Ё§®-
ў вм ЇаЁ®аЁвҐвго ®зҐаҐ¤м в Є, зв®Ўл Ї®¬ҐйҐЁҐ Ё ў§пвЁҐ н«Ґ¬Ґв
вॡ®ў «Ё «®Ј аЁд¬ЁзҐбЄ®Ј® зЁб« ¤Ґ©бвўЁ© (®в а §¬Ґа ®зҐаҐ¤Ё).
ђҐиҐЁҐ. ‘«Ґ¤гп «Ј®аЁв¬г б®авЁа®ўЄЁ ¤ҐаҐў®¬ (ў ҐЈ® ®Є®з -
⥫쮬 ў аЁ вҐ), Ўг¤Ґ¬ а §¬Ґй вм н«Ґ¬Ґвл ®зҐаҐ¤Ё ў ¬ ббЁўҐ
x[1]..x[k], Ї®¤¤Ґа¦Ёў п в Є®Ґ бў®©бвў®: x[i] бв аиҐ (Ё¬ҐҐв
Ў®«миЁ© ЇаЁ®аЁвҐв) бў®Ёе бл®ўҐ© x[2i] Ё x[2i+1], Ґб«Ё в Є®ўлҐ
бгйҐбвўгов - Ё, б«Ґ¤®ў ⥫м®, ўбпЄЁ© н«Ґ¬Ґв бв аиҐ бў®Ёе Ї®-
⮬Є®ў. (‘ўҐ¤ҐЁп ® ЇаЁ®аЁвҐв в Є¦Ґ еа пвбп ў ¬ ббЁўҐ, в Є зв®
¬л Ё¬ҐҐ¬ ¤Ґ«® б ¬ ббЁў®¬ Ї а (н«Ґ¬Ґв, ЇаЁ®аЁвҐв).) “¤ «ҐЁҐ
н«Ґ¬Ґв б б®еа ҐЁҐ¬ нв®Ј® бў®©бвў ®ЇЁб ® ў «Ј®аЁв¬Ґ б®авЁ-
а®ўЄЁ. Ќ ¤® ҐйҐ 㬥вм ў®ббв ў«Ёў вм бў®©бвў® Ї®б«Ґ ¤®Ў ў«ҐЁп
н«Ґ¬Ґв ў Є®Ґж. ќв® ¤Ґ« Ґвбп в Є:
t:= ®¬Ґа ¤®Ў ў«Ґ®Ј® н«Ґ¬Ґв
{Ёў аЁ в: ў ¤ҐаҐўҐ «оЎ®© ЇаҐ¤®Є ЇаЁ®аЁвҐвҐҐ Ї®в®¬Є ,
Ґб«Ё нв®в Ї®в®¬®Є - Ґ t}
while t - Ґ Є®аҐм Ё t бв аиҐ бў®ҐЈ® ®вж do begin
| Ї®¬Ґпвм t б ҐЈ® ®в殬
end;
…б«Ё ®зҐаҐ¤м ®Ўа §гов Ја ¦¤ Ґ, бв®пйЁҐ ў ўҐаиЁ е ¤ҐаҐў , в.Ґ.
§ Є ¦¤л¬ бв®Ёв ¤ў®Ґ, ЇҐаҐ¤ Є ¦¤л¬ (Єа®¬Ґ ЇҐаў®Ј®) - ®¤Ё, в®
б¬лб« нв®Ј® «Ј®аЁв¬ пбҐ: ўбв ў ў Є®Ґж, ЇаЁ®аЁвҐвл© Ја ¦¤ -
Ё зЁ Ґв Їа®ЎЁа вмбп Є з «г, ўлвҐбпп ўЇҐаҐ¤Ё бв®пйЁе -
Ї®Є Ґ ўбваҐвЁв Ў®«ҐҐ ЇаЁ®аЁвҐв®Ј®.
‡ ¬Ґз ЁҐ. ЏаЁ®аЁвҐвго ®зҐаҐ¤м ҐбвҐб⢥® ЁбЇ®«м§®ў вм
ЇаЁ ¬®¤Ґ«Ёа®ў ЁЁ Їа®вҐЄ ойЁе ў® ўаҐ¬ҐЁ Їа®жҐбб®ў. ЏаЁ н⮬
н«Ґ¬Ґвл ®зҐаҐ¤Ё - нв® ®¦Ё¤ Ґ¬лҐ б®ЎлвЁп, Ёе ЇаЁ®аЁвҐв ®ЇаҐ¤Ґ-
«пҐвбп ўаҐ¬ҐҐ¬, Є®Ј¤ ®Ё Їа®Ё§®©¤гв.
Соседние файлы в папке Шень