Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
16
Добавлен:
10.12.2013
Размер:
28.3 Кб
Скачать
ѓ« ў  2. Џ®а®¦¤Ґ­ЁҐ Є®¬ЎЁ­ в®а­ле ®ЎкҐЄв®ў.

‡¤Ґбм б®Ўа ­л § ¤ зЁ, ў Є®в®але вॡгҐвбп Ї®«гзЁвм ®¤Ё­ § 
¤агЈЁ¬ ўбҐ н«Ґ¬Ґ­вл ­ҐЄ®в®а®Ј® ¬­®¦Ґбвў .

2.1. ђ §¬ҐйҐ­Ёп б Ї®ўв®аҐ­Ёп¬Ё.

2.1.1. Ќ ЇҐз в вм ўбҐ Ї®б«Ґ¤®ў вҐ«м­®бвЁ ¤«Ё­л k Ё§ зЁбҐ«
1..n.

ђҐиҐ­ЁҐ. Ѓг¤Ґ¬ ЇҐз в вм Ёе ў «ҐЄбЁЄ®Ја дЁзҐбЄ®¬ Ї®ап¤ЄҐ
(Ї®б«Ґ¤®ў вҐ«м­®бвм a ЇаҐ¤иҐбвўгҐв Ї®б«Ґ¤®ў вҐ«м­®бвЁ b, Ґб«Ё
¤«п ­ҐЄ®в®а®Ј® s Ёе ­ з «м­лҐ ®в१ЄЁ ¤«Ё­л s а ў­л,   (s+1)-л©
з«Ґ­ Ї®б«Ґ¤®ў вҐ«м­®бвЁ a ¬Ґ­миҐ). ЏҐаў®© Ўг¤Ґв Ї®б«Ґ¤®ў -
⥫쭮бвм <1, 1, ..., 1>, Ї®б«Ґ¤­Ґ© - Ї®б«Ґ¤®ў вҐ«м­®бвм <n, n,
..., n>. Ѓг¤Ґ¬ еа ­Ёвм Ї®б«Ґ¤­оо ­ ЇҐз в ­­го Ї®б«Ґ¤®ў вҐ«м­®бвм
ў ¬ ббЁўҐ x[1]...x[k].

...x[1]...x[k] Ї®«®¦Ёвм а ў­л¬ 1
...­ ЇҐз в вм x
...last[1]...last[k] Ї®«®¦Ёвм а ў­л¬ n
while x <> last do begin
| ...x := б«Ґ¤гой п §  x Ї®б«Ґ¤®ў вҐ«м­®бвм
| ...­ ЇҐз в вм x
end;

ЋЇЁиҐ¬, Є Є ¬®¦­® ЇҐаҐ©вЁ ®в x Є б«Ґ¤го饩 Ї®б«Ґ¤®ў -
⥫쭮бвЁ. ‘®Ј« б­® ®ЇаҐ¤Ґ«Ґ­Ёо, г б«Ґ¤го饩 Ї®б«Ґ¤®ў вҐ«м­®бвЁ
ЇҐаўлҐ s з«Ґ­®ў ¤®«¦­л Ўлвм в ЄЁ¬Ё ¦Ґ,   (s+1)-л© - Ў®«миҐ. ќв®
ў®§¬®¦­®, Ґб«Ё x[s+1] Ўл«® ¬Ґ­миҐ n. ‘।Ё в ЄЁе s ­г¦­® ўлЎа вм
­ ЁЎ®«м襥 (Ё­ зҐ Ї®«г祭­ п Ї®б«Ґ¤®ў вҐ«м­®бвм ­Ґ Ўг¤Ґв ­ҐЇ®б-
।б⢥­­® б«Ґ¤го饩). ‘®®вўҐвбвўго饥 x[s+1] ­г¦­® 㢥«ЁзЁвм ­ 
1. €в Є, ­ ¤®, ¤ўЁЈ пбм б Є®­ж  Ї®б«Ґ¤®ў вҐ«м­®бвЁ, ­ ©вЁ б ¬л©
Їа ўл© з«Ґ­, ¬Ґ­миЁ© n (®­ ­ ©¤Ґвбп, в Є Є Є Ї® ЇаҐ¤Ї®«®¦Ґ­Ёо
x<>last), 㢥«ЁзЁвм ҐЈ® ­  1,   Ё¤гйЁҐ §  ­Ё¬ з«Ґ­л Ї®«®¦Ёвм
а ў­л¬Ё 1.

p:=k;
while not (x[p] < n) do begin
| p := p-1;
end;
{x[p] < n, x[p+1] =...= x[k] = n}
x[p] := x[p] + 1;
for i := p+1 to k do begin
| x[i]:=1;
end;

‡ ¬Ґз ­ЁҐ. …б«Ё з«Ґ­ ¬Ё Ї®б«Ґ¤®ў вҐ«м­®бвЁ бзЁв вм зЁб«  ­Ґ
®в 1 ¤® n,   ®в 0 ¤® n-1, в® ЇҐаҐе®¤ Є б«Ґ¤го饬г ᮮ⢥вбвўгҐв
ЇаЁЎ ў«Ґ­Ёо 1 ў n-Ёз­®© бЁб⥬Ґ бзЁб«Ґ­Ёп.

2.1.2. ‚ ЇаҐ¤«®¦Ґ­­®¬  «Ј®аЁв¬Ґ ЁбЇ®«м§гҐвбп ба ў­Ґ­ЁҐ ¤ўге
¬ ббЁў®ў x <> last. “бва ­Ёвм ҐЈ®, ¤®Ў ўЁў Ўг«ҐўбЄго ЇҐаҐ¬Ґ­­го
l Ё ўЄ«озЁў ў Ё­ў аЁ ­в ᮮ⭮襭ЁҐ l <=> Ї®б«Ґ¤®ў вҐ«м­®бвм x -
Ї®б«Ґ¤­пп.

2.1.3. Ќ ЇҐз в вм ўбҐ Ї®¤¬­®¦Ґбвў  ¬­®¦Ґбвў  {1...k}.

ђҐиҐ­ЁҐ. Џ®¤¬­®¦Ґбвў  ­ е®¤пвбп ў® ў§ Ё¬­® ®¤­®§­ з­®¬ б®-
®вўҐвбвўЁЁ б Ї®б«Ґ¤®ў вҐ«м­®бвп¬Ё ­г«Ґ© Ё Ґ¤Ё­Ёж ¤«Ё­л k.

2.1.4. Ќ ЇҐз в вм ўбҐ Ї®б«Ґ¤®ў вҐ«м­®бвЁ Ё§ k Ї®«®¦ЁвҐ«м­ле
楫ле зЁбҐ«, г Є®в®але i-л© з«Ґ­ ­Ґ ЇаҐў®б室Ёв i.


2.2. ЏҐаҐбв ­®ўЄЁ.

2.2.1. Ќ ЇҐз в вм ўбҐ ЇҐаҐбв ­®ўЄЁ зЁбҐ« 1..n (в® Ґбвм Ї®б-
«Ґ¤®ў вҐ«м­®бвЁ ¤«Ё­л n, ў Є®в®алҐ Є ¦¤®Ґ Ё§ зЁбҐ« 1..n ўе®¤Ёв
Ї® ®¤­®¬г а §г).

ђҐиҐ­ЁҐ. ЏҐаҐбв ­®ўЄЁ Ўг¤Ґ¬ еа ­Ёвм ў ¬ ббЁўҐ x[1],...,
x[n] Ё ЇҐз в вм ў «ҐЄбЁЄ®Ја дЁзҐбЄ®¬ Ї®ап¤ЄҐ. (ЏҐаў®© ЇаЁ н⮬
Ўг¤Ґв ЇҐаҐбв ­®ўЄ  <1 2...n>, Ї®б«Ґ¤­Ґ© - <n...2 1>.) „«п б®б-
в ў«Ґ­Ёп  «Ј®аЁв¬  ЇҐаҐе®¤  Є б«Ґ¤го饩 ЇҐаҐбв ­®ўЄҐ § ¤ ¤Ё¬бп
ў®Їа®б®¬: ў Є Є®¬ б«гз Ґ k-л© з«Ґ­ ЇҐаҐбв ­®ўЄЁ ¬®¦­® 㢥«ЁзЁвм,
­Ґ ¬Ґ­пп ЇаҐ¤л¤гйЁе? ЋвўҐв: Ґб«Ё ®­ ¬Ґ­миҐ Є Є®Ј®-«ЁЎ® Ё§ б«Ґ¤г-
ойЁе з«Ґ­®ў (з«Ґ­®ў б ­®¬Ґа ¬Ё Ў®«миҐ k). Њл ¤®«¦­л ­ ©вЁ ­ -
ЁЎ®«м襥 k, ЇаЁ Є®в®а®¬ нв® в Є, в. Ґ. в Є®Ґ k, зв® x[k] <
x[k+1] > ... > x[n]. Џ®б«Ґ нв®Ј® x[k] ­г¦­® 㢥«ЁзЁвм ¬Ё­Ё-
¬ «м­л¬ ў®§¬®¦­л¬ бЇ®б®Ў®¬, в. Ґ. ­ ©вЁ б।Ё x[k+1], ..., x[n]
­ Ё¬Ґ­м襥 зЁб«®, Ў®«м襥 ҐЈ®. Џ®¬Ґ­пў x[k] б ­Ё¬, ®бв Ґвбп а б-
Ї®«®¦Ёвм зЁб«  б ­®¬Ґа ¬Ё k+1, ..., n в Є, зв®Ўл ЇҐаҐбв ­®ўЄ 
Ўл«  ­ Ё¬Ґ­м襩, в® Ґбвм ў ў®§а бв о饬 Ї®ап¤ЄҐ. ќв® ®Ў«ҐЈз Ґвбп
⥬, зв® ®­Ё 㦥 а бЇ®«®¦Ґ­л ў гЎлў о饬 Ї®ап¤ЄҐ.

Ђ«Ј®аЁв¬ ЇҐаҐе®¤  Є б«Ґ¤го饩 ЇҐаҐбв ­®ўЄҐ.

{<x[1],...,x[n-1], x[n]> <> <n,...,2, 1>.}
k:=n-1;
{Ї®б«Ґ¤®ў вҐ«м­®бвм бЇа ў  ®в k гЎлў ой п: x[k+1] >...> x[n]}
while x[k] > x[k+1] do begin
| k:=k-1;
end;
{x[k] < x[k+1] > ... > x[n]}
t:=k+1;
{t <=n, x[k+1] > ... > x[t] > x[k]}
while (t < n) and (x[t+1] > x[k]) do begin
| t:=t+1;
end;
{x[k+1] > ... > x[t] > x[k] > x[t+1] > ... > x[n]}
... ®Ў¬Ґ­пвм x[k] Ё x[t]
{x[k+1] > ... > x[n]}
... ЇҐаҐбв ўЁвм гз бв®Є x[k+1] ... x[n] ў ®Ўа в­®¬ Ї®ап¤ЄҐ

‡ ¬Ґз ­ЁҐ. Џа®Ја ¬¬  Ё¬ҐҐв §­ Є®¬л© ¤ҐдҐЄв: Ґб«Ё t = n, в®
x[t+1] ­Ґ ®ЇаҐ¤Ґ«Ґ­®.

2.2.2. Њ®¤ЁдЁжЁа®ў вм  «Ј®аЁв¬ ЇҐаҐе®¤  Є б«Ґ¤го饩 ЇҐаҐб-
в ­®ўЄҐ в Є, зв®Ўл ®­ б ¬ Їа®ўҐап«, ­Ґ пў«пҐвбп «Ё ¤ ­­ п ЇҐаҐб-
в ­®ўЄ  Ї®б«Ґ¤­Ґ©.

2.3. Џ®¤¬­®¦Ґбвў .

2.3.1. ЏҐаҐзЁб«Ёвм ўбҐ k-н«Ґ¬Ґ­в­лҐ Ї®¤¬­®¦Ґбвў  ¬­®¦Ґбвў 
{1..n}.

ђҐиҐ­ЁҐ. Ѓг¤Ґ¬ ЇаҐ¤бв ў«пвм Є ¦¤®Ґ Ї®¤¬­®¦Ґбвў® Ї®б«Ґ¤®ў -
⥫쭮бвмо x[1]..x[n] ­г«Ґ© Ё Ґ¤Ё­Ёж ¤«Ё­л n, ў Є®в®а®© а®ў­® k
Ґ¤Ё­Ёж. („агЈ®© бЇ®б®Ў ЇаҐ¤бв ў«Ґ­Ёп а §ЎҐаҐ¬ Ї®§¦Ґ.) ’ ЄЁҐ Ї®б-
«Ґ¤®ў вҐ«м­®бвЁ гЇ®а冷稬 «ҐЄбЁЄ®Ја дЁзҐбЄЁ (б¬. ўлиҐ). ЋзҐўЁ¤-
­л© бЇ®б®Ў аҐиҐ­Ёп § ¤ зЁ - ЇҐаҐЎЁа вм ўбҐ Ї®б«Ґ¤®ў вҐ«м­®бвЁ
Є Є а ­миҐ,   § вҐ¬ ®вЎЁа вм б।Ё ­Ёе вҐ, г Є®в®але k Ґ¤Ё­Ёж -
¬л ®вЎа®бЁ¬, бзЁв п ҐЈ® ­ҐнЄ®­®¬Ёз­л¬ (зЁб«® Ї®б«Ґ¤®ў вҐ«м­®б⥩
б k Ґ¤Ё­Ёж ¬Ё ¬®¦Ґв Ўлвм ¬­®Ј® ¬Ґ­миҐ зЁб«  ўбҐе Ї®б«Ґ¤®ў -
⥫쭮б⥩). Ѓг¤Ґ¬ ЁбЄ вм в Є®©  «Ј®аЁв¬, зв®Ўл Ї®«г祭ЁҐ ®зҐ-
।­®© Ї®б«Ґ¤®ў вҐ«м­®бвЁ вॡ®ў «® Ї®ап¤Є  n ¤Ґ©бвўЁ©.
‚ Є Є®¬ б«гз Ґ s-л© з«Ґ­ Ї®б«Ґ¤®ў вҐ«м­®бвЁ ¬®¦­® 㢥«Ё-
зЁвм, ­Ґ ¬Ґ­пп ЇаҐ¤л¤гйЁҐ? …б«Ё x[s] ¬Ґ­пҐвбп б 0 ­  1, в® ¤«п
б®еа ­Ґ­Ёп ®ЎйҐЈ® зЁб«  Ґ¤Ё­Ёж ­г¦­® бЇа ў  ®в е[s] § ¬Ґ­Ёвм 1
­  0. ’ ЄЁ¬ ®Ўа §®¬, е[s] - ЇҐаўл© бЇа ў  ­г«м, §  Є®в®ал¬ бв®пв
Ґ¤Ё­Ёжл. ‹ҐЈЄ® ўЁ¤Ґвм, зв® е[s+1] = 1 (Ё­ зҐ е[s] ­Ґ ЇҐаўл©).
’ ЄЁ¬ ®Ўа §®¬ ­ ¤® ЁбЄ вм ­ ЁЎ®«м襥 s, ¤«п Є®в®а®Ј® е[s]=0,
x[s+1]=1;

______________________
x |________|0|1...1|0...0|
s

‡  е[s+1] ¬®Јгв Ё¤вЁ ҐйҐ ­ҐбЄ®«мЄ® Ґ¤Ё­Ёж,   Ї®б«Ґ ­Ёе ­ҐбЄ®«мЄ®
­г«Ґ©. ‡ ¬Ґ­Ёў е[s] ­  1, ­ ¤® ўлЎа вм Ё¤гйЁҐ §  ­Ё¬ з«Ґ­л в Є,
зв®Ўл Ї®б«Ґ¤®ў вҐ«м­®бвм Ўл«  Ўл ¬Ё­Ё¬ «м­  б в®зЄЁ §аҐ­Ёп ­ иҐ-
Ј® Ї®ап¤Є , в. Ґ. зв®Ўл б­ з «  и«Ё ­г«Ё,   Ї®в®¬ Ґ¤Ё­Ёжл. ‚®в
зв® Ї®«гз Ґвбп:

ЇҐаў п Ї®б«Ґ¤®ў вҐ«м­®бвм 0...01...1 (n-k ­г«Ґ©, k Ґ¤Ё­Ёж)
Ї®б«Ґ¤­пп Ї®б«Ґ¤®ў вҐ«м­®бвм 1...10...0 (k Ґ¤Ё­Ёж, n-k ­г«Ґ©)

 «Ј®аЁв¬ ЇҐаҐе®¤  Є б«Ґ¤го饩 §  е[1]...x[n] Ї®б«Ґ¤®ў вҐ«м­®б-
вЁ (ЇаҐ¤Ї®« Ј Ґ¬, зв® ®­  Ґбвм):

s := n - 1;
while not ((x[s]=0) and (x[s+1]=1)) do begin
| s := s - 1;
end;
{s - з«Ґ­, Ї®¤«Ґ¦ йЁ© Ё§¬Ґ­Ґ­Ёо б 0 ­  1}
num:=0;
for k := s to n do begin
| num := num + x[k];
end;
{num - зЁб«® Ґ¤Ё­Ёж ­  гз бвЄҐ x[s]...x[n], зЁб«® ­г«Ґ©
а ў­® (¤«Ё­  - зЁб«® Ґ¤Ё­Ёж), в. Ґ. (n-s+1) - num}
x[s]:=1;
for k := s+1 to n-num+1 do begin
| x[k] := 0;
end;
for k := n-num+2 to n do begin
| x[k]:=1;
end;

„агЈ®© бЇ®б®Ў ЇаҐ¤бв ў«Ґ­Ёп Ї®¤¬­®¦Ґбвў - нв® ЇҐаҐзЁб«Ґ­ЁҐ
Ёе н«Ґ¬Ґ­в®ў. —в®Ўл Є ¦¤®Ґ Ї®¤¬­®¦Ґбвў® Ё¬Ґ«® а®ў­® ®¤­®
ЇаҐ¤бв ў«Ґ­ЁҐ, ¤®Ј®ў®аЁ¬бп ЇҐаҐзЁб«пвм н«Ґ¬Ґ­вл ў ў®§а бв о饬
Ї®ап¤ЄҐ. ЏаЁе®¤Ё¬ Є в Є®© § ¤ зҐ.

2.3.2. ЏҐаҐзЁб«Ёвм ўбҐ ў®§а бв ойЁҐ Ї®б«Ґ¤®ў вҐ«м­®бвЁ ¤«Ё-
­л k Ё§ зЁбҐ« 1..n ў «ҐЄбЁЄ®Ја дЁзҐбЄ®¬ Ї®ап¤ЄҐ. (ЏаЁ¬Ґа: ЇаЁ
n=5, k=2 Ї®«гз Ґ¬ 12 13 14 15 23 24 25 34 35 45.)

ђҐиҐ­ЁҐ. ЊЁ­Ё¬ «м­®© Ўг¤Ґв Ї®б«Ґ¤®ў вҐ«м­®бвм 1, 2, ..., k;
¬ ЄбЁ¬ «м­®© - (n-k+1),..., (n-1), n. ‚ Є Є®¬ б«гз Ґ s-л© з«Ґ­
Ї®б«Ґ¤®ў вҐ«м­®бвЁ ¬®¦­® 㢥«ЁзЁвм? ЋвўҐв: Ґб«Ё ®­ ¬Ґ­миҐ n-k+s.
Џ®б«Ґ 㢥«ЁзҐ­Ёп s-Ј® н«Ґ¬Ґ­в  ўбҐ б«Ґ¤гойЁҐ ¤®«¦­л ў®§а бв вм б
и Ј®¬ 1. Џ®«гз Ґ¬ в Є®©  «Ј®аЁв¬ ЇҐаҐе®¤  Є б«Ґ¤го饬г:

s:=n;
while not (x[s] < n-k+s) do begin
| s:=s-1;
end;
{s - н«Ґ¬Ґ­в, Ї®¤«Ґ¦ йЁ© 㢥«ЁзҐ­Ёо};
x[s] := x[s]+1;
for i := s+1 to n do begin
| x[i] := x[i-1]+1;
end;

2.3.3. Џгбвм ¬л аҐиЁ«Ё ЇаҐ¤бв ў«пвм k-н«Ґ¬Ґ­в­лҐ Ї®¤¬­®-
¦Ґбвў  ¬­®¦Ґбвў  {1..n} гЎлў ойЁ¬Ё Ї®б«Ґ¤®ў вҐ«м­®бвп¬Ё ¤«Ё­л k,
гЇ®а冷祭­л¬Ё Ї®-ЇаҐ¦­Ґ¬г «ҐЄбЁЄ®Ја дЁзҐбЄЁ. (ЏаЁ¬Ґа : 21 31 32
41 42 43 51 52 53 54.) Љ Є ўлЈ«п¤Ёв в®Ј¤   «Ј®аЁв¬ ЇҐаҐе®¤  Є
б«Ґ¤го饩?

ЋвўҐв. €йҐ¬ ­ ЁЎ®«м襥 s, ¤«п Є®в®а®Ј® е[s]-x[s+1]>1. (…б«Ё
в Є®Ј® s ­Ґв, Ї®« Ј Ґ¬ s = 0.) “ўҐ«ЁзЁў x [s+1] ­  1, Є« ¤Ґ¬ ®б-
в «м­лҐ ¬Ё­Ё¬ «м­® ў®§¬®¦­л¬Ё (x[t] = k+1-t ¤«п t>s).

2.3.4. ђҐиЁвм ¤ўҐ ЇаҐ¤л¤гйЁҐ § ¤ зЁ, § ¬Ґ­Ёў «ҐЄбЁЄ®Ја дЁ-
зҐбЄЁ© Ї®а冷Є ­  ®Ўа в­л© (а ­миҐ Ё¤гв вҐ, Є®в®алҐ Ў®«миҐ ў
«ҐЄбЁЄ®Ја дЁзҐбЄ®¬ Ї®ап¤ЄҐ).

2.3.5. ЏҐаҐзЁб«Ёвм ўбҐ ў«®¦Ґ­Ёп (дг­ЄжЁЁ, ЇҐаҐў®¤пйЁҐ а §-
­лҐ н«Ґ¬Ґ­вл ў а §­лҐ) ¬­®¦Ґбвў  {1..k} ў {1..n} (ЇаҐ¤Ї®« Ј Ґв-
бп, зв® k <= n). Џ®а®¦¤Ґ­ЁҐ ®зҐаҐ¤­®Ј® н«Ґ¬Ґ­в  ¤®«¦­® вॡ®ў вм
Ї®ап¤Є  k ¤Ґ©бвўЁ©.

“Є § ­ЁҐ. ќв  § ¤ з  ¬®¦Ґв Ўлвм ᢥ¤Ґ­  Є ЇҐаҐзЁб«Ґ­Ёо
Ї®¤¬­®¦Ґбвў Ё ЇҐаҐбв ­®ў®Є н«Ґ¬Ґ­в®ў Є ¦¤®Ј® Ї®¤¬­®¦Ґбвў .

2.4. ђ §ЎЁҐ­Ёп.

2.4.1. ЏҐаҐзЁб«Ёвм ўбҐ а §ЎЁҐ­Ёп 楫®Ј® Ї®«®¦ЁвҐ«м­®Ј® зЁб-
«  n ­  жҐ«лҐ Ї®«®¦ЁвҐ«м­лҐ б« Ј Ґ¬лҐ (а §ЎЁҐ­Ёп, ®в«Ёз ойЁҐбп
«Ёим Ї®ап¤Є®¬ б« Ј Ґ¬ле, бзЁв овбп §  ®¤­®). (ЏаЁ¬Ґа: n=4, а §-
ЎЁҐ­Ёп 1+1+1+1, 2+1+1, 2+2, 3+1, 4.)

ђҐиҐ­ЁҐ. „®Ј®ў®аЁ¬бп, зв® (1) ў а §ЎЁҐ­Ёпе б« Ј Ґ¬лҐ Ё¤гв ў
­Ґў®§а бв о饬 Ї®ап¤ЄҐ, (2) б ¬Ё а §ЎЁҐ­Ёп ¬л ЇҐаҐзЁб«пҐ¬ ў «ҐЄ-
бЁЄ®Ја дЁзҐбЄ®¬ Ї®ап¤ЄҐ. ђ §ЎЁҐ­ЁҐ еа ­Ё¬ ў ­ з «Ґ ¬ ббЁў 
x[1]...x[n], ЇаЁ н⮬ Є®«ЁзҐбвў® ўе®¤пйЁе ў ­ҐЈ® зЁбҐ« ®Ў®§­ зЁ¬
k. ‚ ­ з «Ґ x[1]=...=x[n]=1, k=n, ў Є®­жҐ x[1]=n, k=1.
‚ Є Є®¬ б«гз Ґ x[s] ¬®¦­® 㢥«ЁзЁвм ­Ґ ¬Ґ­пп ЇаҐ¤л¤гйЁе?
‚®-ЇҐаўле, ¤®«¦­® Ўлвм x[s-1] > x[s] Ё«Ё s = 1. ‚®-ўв®але, s
¤®«¦­® Ўлвм ­Ґ Ї®б«Ґ¤­Ё¬ н«Ґ¬Ґ­в®¬ (㢥«ЁзҐ­ЁҐ s ­ ¤® Є®¬ЇҐ­бЁ-
а®ў вм 㬥­м襭ЁҐ¬ б«Ґ¤гойЁе). “ўҐ«ЁзЁў s, ўбҐ б«Ґ¤гойЁҐ н«Ґ¬Ґ­-
вл ­ ¤® ў§пвм ¬Ё­Ё¬ «м­® ў®§¬®¦­л¬Ё.

s := k - 1;
while not ((s=1) or (x[s-1] > x[s])) do begin
| s := s-1;
end;
{s - Ї®¤«Ґ¦ йҐҐ 㢥«ЁзҐ­Ёо б« Ј Ґ¬®Ґ}
x [s] := x[s] + 1;
sum := 0;
for i := s+1 to k do begin
| sum := sum + x[i];
end;
{sum - б㬬  з«Ґ­®ў, бв®пўиЁе Ї®б«Ґ x[s]}
for i := 1 to sum-1 do begin
| x [s+i] := 1;
end;
k := s+sum-1;

2.4.2. ЏаҐ¤бв ў«пп Ї®-ЇаҐ¦­Ґ¬г а §ЎЁҐ­Ёп Є Є ­Ґў®§а бв ойЁҐ
Ї®б«Ґ¤®ў вҐ«м­®бвЁ, ЇҐаҐзЁб«Ёвм Ёе ў Ї®ап¤ЄҐ, ®Ўа в­®¬ «ҐЄбЁЄ®Ј-
а дЁзҐбЄ®¬г (¤«п n=4, ­ ЇаЁ¬Ґа, ¤®«¦­® Ї®«гзЁвмбп 4, 3+1, 2+2,
2+1+1, 1+1+1+1).
“Є § ­ЁҐ. “¬Ґ­ми вм ¬®¦­® ЇҐаўл© бЇа ў  з«Ґ­, ­Ґ а ў­л© 1;
­ ©¤п ҐЈ®, 㬥­миЁ¬ ­  1,   б«Ґ¤гойЁҐ ў®§м¬Ґ¬ ¬ ЄбЁ¬ «м­® ў®§-
¬®¦­л¬Ё (а ў­л¬Ё Ґ¬г, Ї®Є  еў в Ґв б㬬л,   Ї®б«Ґ¤­Ё© - бЄ®«мЄ®
®бв ­Ґвбп).

2.4.3. ЏаҐ¤бв ў«пп а §ЎЁҐ­Ёп Є Є ­ҐгЎлў ойЁҐ Ї®б«Ґ¤®ў -
⥫쭮бвЁ, ЇҐаҐзЁб«Ёвм Ёе ў «ҐЄбЁЄ®Ја дЁзҐбЄ®¬ Ї®ап¤ЄҐ. ЏаЁ¬Ґа
¤«п n=4: 1+1+1+1, 1+1+2, 1+3, 2+2, 4;
“Є § ­ЁҐ. Џ®б«Ґ¤­Ё© з«Ґ­ 㢥«ЁзЁвм ­Ґ«м§п,   ЇаҐ¤Ї®б«Ґ¤­Ё©
- ¬®¦­®; Ґб«Ё Ї®б«Ґ 㢥«ЁзҐ­Ёп ­  1 ЇаҐ¤Ї®б«Ґ¤­ҐЈ® з«Ґ­  §  бзҐв
Ї®б«Ґ¤­ҐЈ® ­ агиЁвбп ў®§а бв ­ЁҐ, в® Ё§ ¤ўге з«Ґ­®ў ­ ¤® ᤥ« вм
®¤Ё­, Ґб«Ё ­Ґв, в® Ї®б«Ґ¤­Ё© з«Ґ­ ­ ¤® а §ЎЁвм ­  б« Ј Ґ¬лҐ,
а ў­лҐ ЇаҐ¤л¤г饬г, Ё ®бв в®Є, ­Ґ ¬Ґ­миЁ© ҐЈ®.

2.4.4. ЏаҐ¤бв ў«пп а §ЎЁҐ­Ёп Є Є ­ҐгЎлў ойЁҐ Ї®б«Ґ¤®ў -
⥫쭮бвЁ, ЇҐаҐзЁб«Ёвм Ёе ў Ї®ап¤ЄҐ, ®Ўа в­®¬ «ҐЄбЁЄ®Ја дЁзҐбЄ®-
¬г. ЏаЁ¬Ґа ¤«п n=4: 4, 2+2, 1+3, 1+1+2, 1+1+1+1.
“Є § ­ЁҐ. —в®Ўл н«Ґ¬Ґ­в x[s] ¬®¦­® Ўл«® 㬥­миЁвм, ­Ґ®Ўе®-
¤Ё¬®, зв®Ўл s = 1 Ё«Ё x[s-1] < x[s]. …б«Ё x[s] ­Ґ Ї®б«Ґ¤­Ё©, в®
нв®Ј® Ё ¤®бв в®з­®. …б«Ё ®­ Ї®б«Ґ¤­Ё©, в® ­г¦­®, зв®Ўл x[s-1] <=
(楫 п з бвм (x[s]/2)) Ё«Ё s=1.


2.5. Љ®¤л ѓаҐп Ё  ­ «®ЈЁз­лҐ § ¤ зЁ.

€­®Ј¤  Ўлў Ґв Ї®«Ґ§­® ЇҐаҐзЁб«пвм ®ЎкҐЄвл ў в Є®¬ Ї®ап¤ЄҐ,
зв®Ўл Є ¦¤л© Ї®б«Ґ¤гойЁ© ¬Ё­Ё¬ «м­® ®в«Ёз «бп ®в ЇаҐ¤л¤г饣®.
ђ бᬮваЁ¬ ­ҐбЄ®«мЄ® § ¤ з в Є®Ј® த .

2.5.1. ЏҐаҐзЁб«Ёвм ўбҐ Ї®б«Ґ¤®ў вҐ«м­®бвЁ ¤«Ё­л n Ё§ зЁбҐ«
1..k ў в Є®¬ Ї®ап¤ЄҐ, зв®Ўл Є ¦¤ п б«Ґ¤гой п ®в«Ёз « бм ®в ЇаҐ-
¤л¤г饩 ў Ґ¤Ё­б⢥­­®© жЁдаҐ, ЇаЁзҐ¬ ­Ґ Ў®«ҐҐ, 祬 ­  1.

ђҐиҐ­ЁҐ. ђ бᬮваЁ¬ Їаאַ㣮«м­го ¤®бЄг иЁаЁ­л n Ё ўлб®вл
k. Ќ  Є ¦¤®© ўҐавЁЄ «Ё Ўг¤Ґв бв®пвм и иЄ . ’ ЄЁ¬ ®Ўа §®¬, Ї®«®-
¦Ґ­Ёп и иҐЄ ᮮ⢥вбвўгов Ї®б«Ґ¤®ў вҐ«м­®бвп¬ Ё§ зЁбҐ« 1..k ¤«Ё-
­л n (s-л© з«Ґ­ Ї®б«Ґ¤®ў вҐ«м­®б⨠ᮮ⢥вбвўгҐв ўлб®вҐ и иЄЁ ­ 
s-®© Ј®аЁ§®­в «Ё). Ќ  Є ¦¤®© и иЄҐ ­ аЁб㥬 бв५®зЄг, Є®в®а п
¬®¦Ґв Ўлвм ­ Їа ў«Ґ­  ўўҐае Ё«Ё ў­Ё§. ‚­ з «Ґ ўбҐ и иЄЁ Ї®бв ўЁ¬
­  ­Ё¦­оо Ј®аЁ§®­в «м бв५®зЄ®© ўўҐае. „ «ҐҐ ¤ўЁЈ Ґ¬ и иЄЁ Ї®
в Є®¬г Їа ўЁ«г: ­ ©¤п б ¬го Їа ўго и иЄг, Є®в®аго ¬®¦­® Ї®¤ўЁ-
­гвм ў ­ Їа ў«Ґ­ЁЁ (­ аЁб®ў ­­®© ­  ­Ґ©) бв५ЄЁ, ¤ўЁЈ Ґ¬ ҐҐ ­ 
®¤­г Є«ҐвЄг ў н⮬ ­ Їа ў«Ґ­ЁЁ,   ўбҐ бв®пйЁҐ Їа ўҐҐ ҐҐ и иЄЁ
(®­Ё гЇҐа«Ёбм ў Єа ©) а §ў®а зЁў Ґ¬ ЄагЈ®¬.
џб­®, зв® ­  Є ¦¤®¬ и ЈҐ в®«мЄ® ®¤­  и иЄ  б¤ўЁЈ Ґвбп, в.Ґ.
®¤Ё­ з«Ґ­ Ї®б«Ґ¤®ў вҐ«м­®бвЁ ¬Ґ­пҐвбп ­  1. „®Є ¦Ґ¬ Ё­¤гЄжЁҐ© Ї®
n, зв® Їа®е®¤пвбп ўбҐ Ї®б«Ґ¤®ў вҐ«м­®бвЁ Ё§ зЁбҐ« 1...k. ‘«гз ©
n = 1 ®зҐўЁ¤Ґ­. Џгбвм n > 1. ‚бҐ е®¤л Ї®¤Ґ«Ё¬ ­  вҐ, Ј¤Ґ ¤ўЁЈ -
Ґвбп Ї®б«Ґ¤­пп и иЄ , Ё вҐ, Ј¤Ґ ¤ўЁЈ Ґвбп ­Ґ Ї®б«Ґ¤­пп. ‚® ўв®-
஬ б«гз Ґ Ї®б«Ґ¤­пп и иЄ  бв®Ёв г б⥭л, Ё ¬л ҐҐ Ї®ў®а зЁў Ґ¬,
в Є зв® §  Є ¦¤л¬ 室®¬ ўв®а®Ј® вЁЇ  б«Ґ¤гҐв k-1 室®ў ЇҐаў®Ј®
вЁЇ , §  ўаҐ¬п Є®в®але Ї®б«Ґ¤­пп и иЄ  Ї®Ўлў Ґв ў® ўбҐе Є«ҐвЄ е.
…б«Ё ¬л ⥯Ґам § Ўг¤Ґ¬ ® Ї®б«Ґ¤­Ґ© и иЄҐ, в® ¤ўЁ¦Ґ­Ёп ЇҐаўле n-1
Ї® ЇаҐ¤Ї®«®¦Ґ­Ёо Ё­¤гЄжЁЁ Їа®ЎҐЈ о⠢ᥠЇ®б«Ґ¤®ў вҐ«м­®бвЁ ¤«Ё­л
n-1 Ї® ®¤­®¬г а §г; ¤ўЁ¦Ґ­Ёп ¦Ґ Ї®б«Ґ¤­Ґ© и иЄЁ Ё§ Є ¦¤®© Ї®б«Ґ-
¤®ў вҐ«м­®бвЁ ¤«Ё­л n-1 ¤Ґ« ов k Ї®б«Ґ¤®ў вҐ«м­®б⥩ ¤«Ё­л n.
‚ Їа®Ја ¬¬Ґ, Ї®¬Ё¬® Ї®б«Ґ¤®ў вҐ«м­®бвЁ x[1]...x[n], Ўг¤Ґ¬
еа ­Ёвм ¬ ббЁў d[1]...d[n] Ё§ зЁбҐ« +1 Ё -1 (+1 ᮮ⢥вбвўгҐв
бв५ЄҐ ўўҐае, -1 -бв५ЄҐ ў­Ё§).

Ќ з «м­®Ґ б®бв®п­ЁҐ: x[1] =...= x[n] = 1; d[1] =...= d[n] = 1.

ЏаЁўҐ¤Ґ¬  «Ј®аЁв¬ ЇҐаҐе®¤  Є б«Ґ¤го饩 Ї®б«Ґ¤®ў вҐ«м­®бвЁ (®¤-
­®ўаҐ¬Ґ­­® ўлпб­пҐвбп, ў®§¬®¦Ґ­ «Ё ®­ - ®вўҐв бв ­®ўЁвбп §­ зҐ-
­ЁҐ¬ Ўг«ҐўбЄ®© ЇҐаҐ¬Ґ­­®© p).

{Ґб«Ё ¬®¦­®, ᤥ« вм и Ј Ё Ї®«®¦Ёвм p := true, Ґб«Ё ­Ґв,
Ї®«®¦Ёвм p := false }
i := n;
while (i > 1) and
| (((d[i]=1) and (x[i]=n)) or ((d[i]=-1) and (x[i]=1)))
| do begin
| i:=i-1;
end;
if (d[i]=1 and x[i]=n) or (d[i]=-1 and x[i]=1)
| then begin {i=1}
| p:=false;
end else begin
| p:=true;
| x[i] := x[i] + d[i];
| for j := i+1 to n do begin
| | d[j] := - d[j];
| end;
end;

‡ ¬Ґз ­ЁҐ. „«п Ї®б«Ґ¤®ў вҐ«м­®б⥩ ­г«Ґ© Ё Ґ¤Ё­Ёж ў®§¬®¦­®
¤агЈ®Ґ аҐиҐ­ЁҐ, ЁбЇ®«м§го饥 ¤ў®Ёз­го бЁб⥬г. (€¬Ґ­­® ®­® бўп-
§лў Ґвбп ®Ўлз­® б ­ §ў ­ЁҐ¬ "Є®¤л ѓаҐп".)
‡ ЇЁиҐ¬ Ї®¤ап¤ ўбҐ зЁб«  ®в 0 ¤® (2 ў б⥯Ґ­Ё n) - 1 ў ¤ў®-
Ёз­®© бЁб⥬Ґ. Ќ ЇаЁ¬Ґа, ¤«п n = 3 ­ ЇЁиҐ¬:

000 001 010 011 100 101 110 111

‡ вҐ¬ Є ¦¤®Ґ Ё§ зЁбҐ« Ї®¤ўҐаЈ­Ґ¬ ЇаҐ®Ўа §®ў ­Ёо, § ¬Ґ­Ёў Є ¦¤го
жЁдаг, Єа®¬Ґ ЇҐаў®©, ­  ҐҐ б㬬г б ЇаҐ¤л¤г饩 жЁда®© (Ї® ¬®¤г«о
2). €­л¬Ё б«®ў ¬Ё, зЁб«®

a[1], a[2],...,a[n] ЇаҐ®Ўа §гҐ¬ ў
a[1], a[1] + a[2], a[2] + a[3],...,a[n-1] + a[n]

(б㬬  Ї® ¬®¤г«о 2). „«п n=3 Ї®«гзЁ¬:

000 001 011 010 110 111 101 100.

‹ҐЈЄ® Їа®ўҐаЁвм, зв® ®ЇЁб ­­®Ґ ЇаҐ®Ўа §®ў ­ЁҐ зЁбҐ« ®Ўа вЁ-
¬® (Ё ⥬ б ¬л¬ ¤ Ґв ўбҐ Ї®б«Ґ¤®ў вҐ«м­®бвЁ Ї® ®¤­®¬г а §г).
Ља®¬Ґ в®Ј®, ¤ў®Ёз­лҐ § ЇЁбЁ б®бҐ¤­Ёе зЁбҐ« ®в«Ёз овбп § ¬Ґ­®©
Є®­ж  011...1 ­  Є®­Ґж 100...0, зв® - Ї®б«Ґ ЇаҐ®Ўа §®ў ­Ёп -
ЇаЁў®¤Ёв Є Ё§¬Ґ­Ґ­Ёо Ґ¤Ё­б⢥­­®© жЁдал.

ЏаЁ¬Ґ­Ґ­ЁҐ Є®¤  ѓаҐп. Џгбвм Ґбвм ўа й ой пбп ®бм, Ё ¬л е®-
вЁ¬ Ї®бв ўЁвм ¤ взЁЄ гЈ«  Ї®ў®а®в  нв®© ®бЁ. Ќ б ¤Ё¬ ­  ®бм Ў -
а Ў ­, ўлЄа бЁ¬ Ї®«®ўЁ­г Ў а Ў ­  ў зҐа­л© 梥в, Ї®«®ўЁ­г ў ЎҐ-
«л© Ё гбв ­®ўЁ¬ д®в®н«Ґ¬Ґ­в. Ќ  ҐЈ® ўл室Ґ Ўг¤Ґв ў Ї®«®ўЁ­Ґ б«г-
з Ґў 0,   ў Ї®«®ўЁ­Ґ 1 (в. Ґ. ¬л Ё§¬Ґа塞 гЈ®« "б в®з­®бвмо ¤®
180").

ђ §ўҐавЄ  Ў а Ў ­ :
0 1
-> |_|_|_|_|*|*|*|*| <- (бЄ«ҐЁвм Ў®Є ).

‘¤Ґ« ў а冷¬ ¤агЈго ¤®а®¦Єг Ё§ ¤ўге зҐа­ле Ё ЎҐ«ле з б⥩ Ё
Ї®бв ўЁў ўв®а®© д®в®н«Ґ¬Ґ­в, Ї®«гз Ґ¬ ў®§¬®¦­®бвм Ё§¬ҐаЁвм гЈ®«
б в®з­®бвмо ¤® 90 Ја ¤гб®ў:

0 0 1 1
0 1 0 1
_ _ _ _
|_|_|_|_|*|*|*|*|
|_|_|*|*|_|_|*|*|

‘¤Ґ« ў ваҐвмо,

0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
_ _ _ _
|_|_|_|_|*|*|*|*|
|_|_|*|*|_|_|*|*|
|_|*|_|*|_|*|_|*|

¬л Ё§¬ҐаЁ¬ гЈ®« б в®з­®бвмо ¤® 45 Ја ¤гб®ў Ё в.¤. ќв  Ё¤Ґп Ё¬Ґ-
Ґв, ®¤­ Є®, ­Ґ¤®бв в®Є: ў ¬®¬Ґ­в ЇҐаҐбҐзҐ­Ёп Ја ­Ёж ба §г ­Ґб-
Є®«мЄ® д®в®н«Ґ¬Ґ­в®ў ¬Ґ­пов бЁЈ­ «, Ё Ґб«Ё нвЁ Ё§¬Ґ­Ґ­Ёп Їа®-
Ё§®©¤гв ­Ґ ®¤­®ўаҐ¬Ґ­­®, ­  Є Є®Ґ-в® ўаҐ¬п Ї®Є § ­Ёп д®в®н«Ґ¬Ґ­-
в®ў Ўг¤гв ЎҐбб¬лб«Ґ­­л¬Ё. Љ®¤л ѓаҐп Ї®§ў®«пов Ё§ЎҐ¦ вм нв®©
®Ї б­®бвЁ. ‘¤Ґ« Ґ¬ в Є, зв®Ўл ­  Є ¦¤®¬ и ЈҐ ¬Ґ­п«®бм Ї®Є § ­ЁҐ
«Ёим ®¤­®Ј® д®в®н«Ґ¬Ґ­в  (ў ⮬ зЁб«Ґ Ё ­  Ї®б«Ґ¤­Ґ¬, Ї®б«Ґ жҐ-
«®Ј® ®Ў®а®в ).

0 0 0 0 1 1 1 1
0 0 1 1 1 1 0 0
0 1 1 0 0 1 1 0
_ _ _ _
|_|_|_|_|*|*|*|*|
|_|_|*|*|*|*|_|_|
|_|*|*|_|_|*|*|_|

Ќ ЇЁб ­­ п ­ ¬Ё д®а¬г«  Ї®§ў®«пҐв «ҐЈЄ® ЇаҐ®Ўа §®ў вм ¤ ­-
­лҐ ®в д®в®н«Ґ¬Ґ­в®ў ў ¤ў®Ёз­л© Є®¤ гЈ«  Ї®ў®а®в .

2.5.2. Ќ ЇҐз в вм ўбҐ ЇҐаҐбв ­®ўЄЁ зЁбҐ« 1..n в Є, зв®Ўл
Є ¦¤ п б«Ґ¤гой п Ї®«гз « бм Ё§ ЇаҐ¤л¤г饩 ЇҐаҐбв ­®ўЄ®©
(ва ­бЇ®§ЁжЁҐ©) ¤ўге б®бҐ¤­Ёе зЁбҐ«. Ќ ЇаЁ¬Ґа, ЇаЁ n = 3 ¤®Їгб-
вЁ¬ в Є®© Ї®а冷Є: 3.2 1 -> 2 3.1 -> 2.1 3 -> 1 2.3 -> 1.3 2 ->
3 1 2 (¬Ґ¦¤г ЇҐаҐбв ў«пҐ¬л¬Ё зЁб« ¬Ё ўбв ў«Ґ­л в®зЄЁ).

ђҐиҐ­ЁҐ. Ќ ап¤г б ¬­®¦Ґбвў®¬ ЇҐаҐбв ­®ў®Є а бᬮваЁ¬ ¬­®-
¦Ґбвў® Ї®б«Ґ¤®ў вҐ«м­®б⥩ y[1]..y[n] 楫ле ­Ґ®ваЁж вҐ«м­ле зЁ-
ᥫ, г Є®в®але y[1] <= 0,..., y[n] <= n-1. ‚ ­Ґ¬ бв®«мЄ® ¦Ґ н«Ґ-
¬Ґ­в®ў, бЄ®«мЄ® ў ¬­®¦Ґб⢥ ўбҐе ЇҐаҐбв ­®ў®Є, Ё ¬л ᥩз б гбв -
­®ўЁ¬ ¬Ґ¦¤г ­Ё¬Ё ў§ Ё¬­® ®¤­®§­ з­®Ґ ᮮ⢥вбвўЁҐ. €¬Ґ­­®, Є ¦-
¤®© ЇҐаҐбв ­®ўЄҐ Ї®бв ўЁ¬ ў ᮮ⢥вбвўЁҐ Ї®б«Ґ¤®ў вҐ«м­®бвм
y[1]..y[n], Ј¤Ґ y[i] - Є®«ЁзҐбвў® зЁбҐ«, ¬Ґ­миЁе i Ё бв®пйЁе «Ґ-
ўҐҐ i ў нв®© ЇҐаҐбв ­®ўЄҐ. ‚§ Ё¬­ п ®¤­®§­ з­®бвм ўл⥪ Ґв Ё§
в Є®Ј® § ¬Ґз ­Ёп. ЏҐаҐбв ­®ўЄ  зЁбҐ« 1...n Ї®«гз Ґвбп Ё§ ЇҐаҐб-
в ­®ўЄЁ зЁбҐ« 1..n-1 ¤®Ў ў«Ґ­ЁҐ¬ зЁб«  n, Є®в®а®Ґ ¬®¦­® ўбв ўЁвм
­  «оЎ®Ґ Ё§ n ¬Ґбв. ЏаЁ н⮬ Є б®Ї®бв ў«пҐ¬®© б ­Ґ© Ї®б«Ґ¤®ў -
⥫쭮бвЁ ¤®Ў ў«пҐвбп ҐйҐ ®¤Ё­ з«Ґ­, ЇаЁ­Ё¬ ойЁ© §­ зҐ­Ёп ®в 0
¤® n-1,   ЇаҐ¤л¤гйЁҐ з«Ґ­л ­Ґ ¬Ґ­повбп. ЏаЁ н⮬ ®Є §лў Ґвбп,
зв® Ё§¬Ґ­Ґ­ЁҐ ­  Ґ¤Ё­Ёжг ®¤­®Ј® Ё§ з«Ґ­®ў Ї®б«Ґ¤®ў вҐ«м­®бвЁ y
ᮮ⢥вбвўгҐв ЇҐаҐбв ­®ўЄҐ ¤ўге б®бҐ¤­Ёе зЁбҐ«, Ґб«Ё ўбҐ б«Ґ¤г-
ойЁҐ зЁб«  Ї®б«Ґ¤®ў вҐ«м­®бвЁ y ЇаЁ­Ё¬ ов ¬ ЄбЁ¬ «м­® Ё«Ё ¬Ё­Ё-
¬ «м­® ў®§¬®¦­лҐ ¤«п ­Ёе §­ зҐ­Ёп. €¬Ґ­­®, 㢥«ЁзҐ­ЁҐ y[i] ­  1
ᮮ⢥вбвўгҐв ЇҐаҐбв ­®ўЄҐ зЁб«  i б ҐЈ® Їа ўл¬ б®бҐ¤®¬,  
㬥­м襭ЁҐ - б «Ґўл¬.
’ҐЇҐам ўбЇ®¬­Ё¬ аҐиҐ­ЁҐ § ¤ зЁ ® ЇҐаҐзЁб«Ґ­ЁЁ ўбҐе Ї®б«Ґ¤®-
ў вҐ«м­®б⥩, ­  Є ¦¤®¬ и ЈҐ Є®в®а®Ј® ®¤Ё­ з«Ґ­ ¬Ґ­пҐвбп ­  Ґ¤Ё-
­Ёжг. ‡ ¬Ґ­Ёў Їаאַ㣮«м­го ¤®бЄг ¤®бЄ®© ў д®а¬Ґ «Ґбв­Ёжл (ўлб®-
в  i-®© ўҐавЁЄ «Ё а ў­  i) Ё ¤ўЁЈ п и иЄЁ Ї® ⥬ ¦Ґ Їа ўЁ« ¬, ¬л
ЇҐаҐзЁб«Ё¬ ўбҐ Ї®б«Ґ¤®ў вҐ«м­®бвЁ y, ЇаЁзҐ¬ i-л© з«Ґ­ Ўг¤Ґв ¬Ґ-
­пвмбп, «Ёим Ґб«Ё ўбҐ б«Ґ¤гойЁҐ и иЄЁ бв®пв г Єа п. Ќ ¤® ҐйҐ
㬥вм Ї а ««Ґ«м­® б Ё§¬Ґ­Ґ­ЁҐ¬ y Є®а४вЁа®ў вм ЇҐаҐбв ­®ўЄг.
ЋзҐўЁ¤­л© бЇ®б®Ў вॡгҐв ®влбЄ ­Ёп ў ­Ґ© зЁб«  i; нв® ¬®¦­® ®Ў-
«ҐЈзЁвм, Ґб«Ё Ї®¬Ё¬® б ¬®© ЇҐаҐбв ­®ўЄЁ еа ­Ёвм дг­ЄжЁо i |--->
Ї®§ЁжЁп зЁб«  i ў ЇҐаҐбв ­®ўЄҐ (®Ўа в­®Ґ Є ЇҐаҐбв ­®ўЄҐ ®в®Ўа -
¦Ґ­ЁҐ), Ё ᮮ⢥вбвўгойЁ¬ ®Ўа §®¬ ҐҐ Є®а४вЁа®ў вм. ‚®в Є Є п
Ї®«гз Ґвбп Їа®Ја ¬¬ :

program test;
| const n=...;
| var
| x: array [1..n] of 1..n; {ЇҐаҐбв ­®ўЄ }
| inv_x: array [1..n] of 1..n; {®Ўа в­ п ЇҐаҐбв ­®ўЄ }
| y: array [1..n] of integer; {Y[i] < i}
| d: array [1..n] of -1..1; {­ Їа ў«Ґ­Ёп}
| b: boolean;
|
| procedure print_x;
| | var i: integer;
| begin
| | for i:=1 to n do begin
| | | write (x[i], ' ');
| | end;
| | writeln;
| end;
|
| procedure set_first;{ЇҐаў п ЇҐаҐбв ­®ўЄ : y[i]=0 ЇаЁ ўбҐе i}
| | var i : integer;
| begin
| | for i := 1 to n do begin
| | | x[i] := n + 1 - i;
| | | inv_x[i] := n + 1 - i;
| | | y[i]:=0;
| | | d[i]:=1;
| | end;
| end;
|
| procedure move (var done : boolean);
| | var i, j, pos1, pos2, val1, val2, tmp : integer;
| begin
| | i := n;
| | while (i > 1) and (((d[i]=1) and (y[i]=i-1)) or
| | | ((y[i]=-1) and (y[i]=0))) do begin
| | | i := i-1;
| | end;
| | done := (i>1);
| | {гЇа®йҐ­ЁҐ бўп§ ­® б ⥬, зв® ЇҐаўл© з«Ґ­ ­Ґ«м§п ¬Ґ­пвм}
| | if done then begin
| | | y[i] := y[i]+d[i];
| | | for j := i+1 to n do begin
| | | | d[j] := -d[j];
| | | end;
| | | pos1 := inv_x[i];
| | | val1 := i;
| | | pos2 := pos1 + d[i];
| | | val2 := x[pos2];
| | | {pos1, pos2 - ­®¬Ґа  ЇҐаҐбв ў«пҐ¬ле н«Ґ¬Ґ­в®ў;
| | | val1, val2 - Ёе §­ зҐ­Ёп}
| | | tmp := x[pos1];
| | | x[pos1] := x[pos2];
| | | x[pos2] := tmp;
| | | tmp := inv_x[val1];
| | | inv_x[val1] := inv_x[val2];
| | | inv_x[val2] := tmp;
| | end;
| end;
|
begin
| set_first;
| print_x;
| b := true;
| {­ ЇҐз в ­л ўбҐ ЇҐаҐбв ­®ўЄЁ ¤® ⥪г饩 ўЄ«озЁвҐ«м­®;
| Ґб«Ё b «®¦­®, ⮠⥪гй п - Ї®б«Ґ¤­пп}
| while b do begin
| | move (b);
| | if b then print_x;
| end;
end.

2.6. ЌҐбЄ®«мЄ® § ¬Ґз ­Ё©.

Џ®б¬®ваЁ¬ ҐйҐ а § ­  ЁбЇ®«м§®ў ­­лҐ ­ ¬Ё ЇаЁҐ¬л. ‚­ з «Ґ
г¤ ў «®бм аҐиЁвм § ¤ зг Ї® в Є®© б奬Ґ: ®ЇаҐ¤Ґ«пҐ¬ Ї®а冷Є ­ 
Ї®¤«Ґ¦ йЁе ЇҐаҐзЁб«Ґ­Ёо ®ЎкҐЄв е Ё пў­® ®ЇЁблў Ґ¬ Їа®жҐ¤гаг ЇҐ-
аҐе®¤  ®в ¤ ­­®Ј® ®ЎкҐЄв  Є б«Ґ¤го饬г (ў б¬лб«Ґ нв®Ј® Ї®ап¤Є ).
‚ § ¤ зҐ ® Є®¤ е ѓаҐп Ї®вॡ®ў «®бм еа ­Ёвм, Ї®¬Ё¬® ⥪г饣®
®ЎкҐЄв , Ё ­ҐЄ®в®аго ¤®Ї®«­ЁвҐ«м­го Ё­д®а¬ жЁо (­ Їа ў«Ґ­Ёп
бв५®Є). Ќ Є®­Ґж, ў § ¤ зҐ ® ЇҐаҐзЁб«Ґ­ЁЁ ЇҐаҐбв ­®ў®Є (­  Є ¦-
¤®¬ и ЈҐ ¤®ЇгбвЁ¬  ®¤­  ва ­бЇ®§ЁжЁп) ¬л ЇаЁ¬Ґ­Ё«Ё в Є®© ЇаЁҐ¬:
гбв ­®ўЁ«Ё ў§ Ё¬­® ®¤­®§­ з­®Ґ ᮮ⢥вбвўЁҐ ¬Ґ¦¤г ЇҐаҐзЁб«пҐ¬л¬
¬­®¦Ґбвў®¬ Ё ¤агЈЁ¬, Ў®«ҐҐ Їа®бв® гбв஥­­л¬. ’ ЄЁе ᮮ⢥вбвўЁ©
ў Є®¬ЎЁ­ в®аЁЄҐ Ё§ўҐбв­® ¬­®Ј®. Њл ЇаЁўҐ¤Ґ¬ ­ҐбЄ®«мЄ® § ¤ з,
бўп§ ­­ле б в Є ­ §лў Ґ¬л¬Ё "зЁб« ¬Ё Љ в « ­ ".

2.6.1. ЏҐаҐзЁб«Ёвм ўбҐ Ї®б«Ґ¤®ў вҐ«м­®бвЁ ¤«Ё­л 2n, б®бв ў-
«Ґ­­лҐ Ё§ n Ґ¤Ё­Ёж Ё n ¬Ё­гб Ґ¤Ё­Ёж, г Є®в®але б㬬  «оЎ®Ј® ­ -
з «м­®Ј® ®в१Є  Ї®«®¦ЁвҐ«м­  (в.Ґ. зЁб«® ¬Ё­гб Ґ¤Ё­Ёж ў ­Ґ¬ ­Ґ
ЇаҐў®б室Ёв зЁб«  Ґ¤Ё­Ёж).

ђҐиҐ­ЁҐ. €§®Ўа ¦ п Ґ¤Ё­Ёжг ўҐЄв®а®¬ (1,1),   ¬Ё­гб Ґ¤Ё­Ёжг
ўҐЄв®а®¬ (1,-1), ¬®¦­® бЄ § вм, зв® ¬л ЁйҐ¬ ЇгвЁ Ё§ в®зЄЁ (0,0)
ў в®зЄг (n,0), ­Ґ ®ЇгбЄ ойЁҐбп ­Ё¦Ґ ®бЁ  ЎбжЁбб.
Ѓг¤Ґ¬ ЇҐаҐзЁб«пвм Ї®б«Ґ¤®ў вҐ«м­®бвЁ ў «ҐЄбЁЄ®Ја дЁзҐбЄ®¬
Ї®ап¤ЄҐ, бзЁв п, зв® -1 ЇаҐ¤иҐбвўгҐв 1. ЏҐаў®© Ї®б«Ґ¤®ў -
⥫쭮бвмо Ўг¤Ґв "ЇЁ« "
1, -1, 1, -1, ...
  Ї®б«Ґ¤­Ґ© - "Ј®аЄ "
1, 1, 1, ..., 1, -1, -1, ..., -1.
Љ Є ЇҐаҐ©вЁ ®в Ї®б«Ґ¤®ў вҐ«м­®бвЁ Є б«Ґ¤го饩? „® ­ҐЄ®в®а®-
Ј® ¬Ґбв  ®­Ё ¤®«¦­л б®ўЇ ¤ вм,   § вҐ¬ ­ ¤® § ¬Ґ­Ёвм -1 ­  1.
ЊҐбв® § ¬Ґ­л ¤®«¦­® Ўлвм а бЇ®«®¦Ґ­® Є Є ¬®¦­® Їа ўҐҐ. Ќ® § ¬Ґ-
­пвм -1 ­  1 ¬®¦­® в®«мЄ® ў ⮬ б«гз Ґ, Ґб«Ё бЇа ў  ®в ­ҐҐ Ґбвм
Ґ¤Ё­Ёж  (Є®в®аго ¬®¦­® § ¬Ґ­Ёвм ­  -1). ‡ ¬Ґ­Ёў -1 ­  1, ¬л ЇаЁ-
室Ё¬ Є в Є®© § ¤ зҐ: дЁЄбЁа®ў ­ ­ з «м­л© Єгб®Є Ї®б«Ґ¤®ў -
⥫쭮бвЁ, ­ ¤® ­ ©вЁ ¬Ё­Ё¬ «м­®Ґ Їа®¤®«¦Ґ­ЁҐ. …Ґ аҐиҐ­ЁҐ: ­ ¤®
ЇаЁЇЁблў вм -1, Ґб«Ё нв® ­Ґ ­ агиЁв гб«®ўЁп ­Ґ®ваЁж вҐ«м­®бвЁ,  
Ё­ зҐ ЇаЁЇЁблў вм 1. Џ®«гз Ґ¬ в Єго Їа®Ја ¬¬г:

...
type array2n = array [1..2n] of integer;
...
procedure get_next (var a: array2n; var last: Boolean);
| {ў a Ї®¬Ґй Ґвбп б«Ґ¤гой п Ї®б«Ґ¤®ў вҐ«м­®бвм, Ґб«Ё}
| {®­  Ґбвм (ЇаЁ н⮬ last=false), Ё­ зҐ last:=true}
| var k, i, sum: integer;
begin
| k:=2*n;
| {Ё­ў аЁ ­в: ў a[k+1..2n] в®«мЄ® ¬Ё­гб Ґ¤Ё­Ёжл}
| while a[k] = -1 do begin k:=k-1; end;
| {k - ¬ ЄбЁ¬ «м­®Ґ б।Ё вҐе, ¤«п Є®в®але a[k]=1}
| while (k>0) and (a[k] = 1) do begin k:=k-1; end;
| {a[k] - б ¬ п Їа ў п -1, §  Є®в®а®© Ґбвм 1;
| Ґб«Ё в ЄЁе ­Ґв, в® k=0}
| if k = 0 then begin
| | last := true;
| end else begin
| | last := false;
| | i:=0; sum:=0;
| | {sum = a[1]+...+a[i]}
| | while i<> k do begin
| | | i:=i+1; sum:= sum+a[i];
| | end;
| | {sum = a[1]+...+a[k]}
| | a[k]:= 1; sum:= sum+2;
| | {ўЇ«®вм ¤® a[k] ўбҐ Ё§¬Ґ­Ґ­®, sum=a[1]+...+a[k]}
| | while k <> 2*n do begin
| | | k:=k+1;
| | | if sum > 0 then begin
| | | | a[k]:=-1
| | | end else begin
| | | | a[k]:=1;
| | | end;
| | | sum:= sum+a[k];
| | end;
| | {k=n, sum=a[1]+...a[2n]=0}
| end;
end;

2.6.2. ЏҐаҐзЁб«Ёвм ўбҐ а ббв ­®ўЄЁ бЄ®Ў®Є ў Їа®Ё§ўҐ¤Ґ­ЁЁ n
ᮬ­®¦ЁвҐ«Ґ©. Џ®а冷Є ᮬ­®¦ЁвҐ«Ґ© ­Ґ ¬Ґ­пҐвбп, бЄ®ЎЄЁ Ї®«­®бвмо
®ЇаҐ¤Ґ«пов Ї®а冷Є ¤Ґ©бвўЁ©. (Ќ ЇаЁ¬Ґа, ¤«п n = 4 Ґбвм 5 а ббв -
­®ў®Є ((ab)c)d, (a(bc))d, (ab)(cd), a((bc)d), a(b(cd)).)

“Є § ­ЁҐ. Љ ¦¤®¬г Ї®ап¤Єг ¤Ґ©бвўЁ© ᮮ⢥вбвўгҐв Ї®б«Ґ¤®ў -
⥫쭮бвм Є®¬ ­¤ б⥪®ў®Ј® Є «мЄг«пв®а .

2.6.3. Ќ  ®Єаг¦­®бвЁ § ¤ ­® 2n в®зҐЄ, Їа®­г¬Ґа®ў ­­ле ®в 1
¤® 2n. ЏҐаҐзЁб«Ёвм ўбҐ бЇ®б®Ўл Їа®ўҐбвЁ n ­ҐЇҐаҐбҐЄ ойЁебп е®а¤
б ўҐаиЁ­ ¬Ё ў нвЁе в®зЄ е.

2.6.4. ЏҐаҐзЁб«Ёвм ўбҐ бЇ®б®Ўл ࠧ१ вм n-гЈ®«м­ЁЄ ­  ваҐ-
гЈ®«м­ЁЄЁ, Їа®ўҐ¤п n - 2 ҐЈ® ¤Ё Ј®­ «Ё.

…йҐ ®¤Ё­ Є« бб § ¤ з ­  ЇҐаҐзЁб«Ґ­ЁҐ ўбҐе н«Ґ¬Ґ­в®ў § ¤ ­-
­®Ј® ¬­®¦Ґбвў  ¬л а бᬮваЁ¬ ­Ё¦Ґ, ®Ўб㦤 п ¬Ґв®¤ Ї®ЁбЄ  б
ў®§ўа в ¬Ё (backtracking).

2.7. Џ®¤бзҐв Є®«ЁзҐбвў.

€­®Ј¤  ¬®¦­® ­ ©вЁ Є®«ЁзҐбвў® ®ЎкҐЄв®ў б ⥬ Ё«Ё Ё­л¬
бў®©бвў®¬, ­Ґ ЇҐаҐзЁб«пп Ёе. Љ« ббЁзҐбЄЁ© ЇаЁ¬Ґа: C(n,k) - зЁб«®
ўбҐе k-н«Ґ¬Ґ­в­ле Ї®¤¬­®¦Ґбвў n-н«Ґ¬Ґ­в­®Ј® ¬­®¦Ґбвў  - ¬®¦­®
­ ©вЁ, § Ї®«­пп в Ў«Ёжг §­ зҐ­Ё© дг­ЄжЁЁ ‘ Ї® д®а¬г« ¬:

C (n,0) = C (n,n) = 1 (n >= 1)
C (n,k) = C (n-1,k-1) + C (n-1,k) (n > 1, 0 < k < n);

Ё«Ё Ї® д®а¬г«Ґ n!/((k!)*(n-k)!). (ЏҐаўл© бЇ®б®Ў нд䥪⨢­ҐҐ, Ґб-
«Ё ­ ¤® ўлзЁб«Ёвм ¬­®Ј® §­ зҐ­Ё© ‘(n,k).)

ЏаЁўҐ¤Ґ¬ ¤агЈЁҐ ЇаЁ¬Ґал.

2.7.1 (—Ёб«® а §ЎЁҐ­Ё©). (ЏаҐ¤« Ј « бм ­  ўбҐб®о§­®© ®«Ё¬-
ЇЁ ¤Ґ Ї® Їа®Ја ¬¬Ёа®ў ­Ёо 1988 Ј®¤ .) Џгбвм P(n) - зЁб«® а §ЎЁ-
Ґ­Ё© 楫®Ј® Ї®«®¦ЁвҐ«м­®Ј® n ­  жҐ«лҐ Ї®«®¦ЁвҐ«м­лҐ б« Ј Ґ¬лҐ
(ЎҐ§ гзҐв  Ї®ап¤Є , 1+2 Ё 2+1 - ®¤­® Ё в® ¦Ґ а §ЎЁҐ­ЁҐ). ЏаЁ n=0
Ї®«®¦Ё¬ P(n) = 1 (Ґ¤Ё­б⢥­­®Ґ а §ЎЁҐ­ЁҐ ­Ґ ᮤҐа¦Ёв б« Ј Ґ¬ле).
Џ®бва®Ёвм  «Ј®аЁв¬ ўлзЁб«Ґ­Ёп P(n) ¤«п § ¤ ­­®Ј® n.
ђҐиҐ­ЁҐ. Њ®¦­® ¤®Є § вм (нв® ­ҐваЁўЁ «м­®) в Єго д®а¬г«г
¤«п P(n):

P(n) = P(n-1)+P(n-2)-P(n-5)-P(n-7)+P(n-12)+P(n-15) +...

(§­ ЄЁ г Ї а з«Ґ­®ў зҐаҐ¤говбп, ўлзЁв Ґ¬лҐ ў ®¤­®© Ї аҐ а ў­л
(3*q*q-q)/2 Ё (3*q*q+q)/2).
Ћ¤­ Є® Ё ЎҐ§ ҐҐ ЁбЇ®«м§®ў ­Ёп ¬®¦­® ЇаЁ¤г¬ вм бЇ®б®Ў ўлзЁб-
«Ґ­Ёп P(n), Є®в®ал© бгйҐб⢥­­® нд䥪⨢­ҐҐ ЇҐаҐЎ®а  Ё Ї®¤бзҐв 
ўбҐе а §ЎЁҐ­Ё©.
ЋЎ®§­ зЁ¬ зҐаҐ§ R(n,k) (ЇаЁ n >= 0, k >= 0) зЁб«® а §ЎЁҐ­Ё©
n ­  жҐ«лҐ Ї®«®¦ЁвҐ«м­лҐ б« Ј Ґ¬лҐ, ­Ґ ЇаҐў®б室пйЁҐ k. (ЏаЁ
н⮬ R(0,k) бзЁв Ґ¬ а ў­л¬ 1 ¤«п ўбҐе k >= 0.) ЋзҐўЁ¤­®, P(n) =
R(n,n). ‚ᥠࠧЎЁҐ­Ёп n ­  б« Ј Ґ¬лҐ, ­Ґ ЇаҐў®б室пйЁҐ k, а -
§®ЎмҐ¬ ­  ЈагЇЇл ў § ўЁбЁ¬®бвЁ ®в ¬ ЄбЁ¬ «м­®Ј® б« Ј Ґ¬®Ј®
(®Ў®§­ зЁ¬ ҐЈ® i). —Ёб«® R(n,k) а ў­® б㬬Ґ (Ї® ўбҐ¬ i ®в 1 ¤®
k) Є®«ЁзҐбвў а §ЎЁҐ­Ё© б® б« Ј Ґ¬л¬Ё ­Ґ Ў®«миҐ k Ё ¬ ЄбЁ¬ «м­л¬
б« Ј Ґ¬л¬, а ў­л¬ i. Ђ а §ЎЁҐ­Ёп n ­  б« Ј Ґ¬лҐ ­Ґ Ў®«ҐҐ k б
ЇҐаўл¬ б« Ј Ґ¬л¬, а ў­л¬ i, Ї® бгйҐбвўг ЇаҐ¤бв ў«пов б®Ў®© а §-
ЎЁҐ­Ёп n - i ­  б« Ј Ґ¬лҐ, ­Ґ ЇаҐў®б室пйЁҐ i (ЇаЁ i <= k). ’ Є
зв®

R(n,k) = б㬬  Ї® i ®в 1 ¤® k зЁбҐ« R(n-i,i) ЇаЁ k <= n;
R(n,k) = R(n,n) ЇаЁ k >= n,

зв® Ї®§ў®«пҐв § Ї®«­пвм в Ў«Ёжг §­ зҐ­Ё© дг­ЄжЁЁ R.

2.7.2 (‘з бв«ЁўлҐ ЎЁ«Ґвл). (‡ ¤ з  ЇаҐ¤« Ј « бм ­  ‚бҐб®о§-
­®© ®«Ё¬ЇЁ ¤Ґ Ї® Їа®Ја ¬¬Ёа®ў ­Ёо 1989 Ј®¤ ). Џ®б«Ґ¤®ў вҐ«м­®бвм
Ё§ 2n жЁда (Є ¦¤ п жЁда  ®в 0 ¤® 9) ­ §лў Ґвбп бз бв«Ёўл¬ ЎЁ«Ґ-
⮬, Ґб«Ё б㬬  ЇҐаўле n жЁда а ў­  б㬬Ґ Ї®б«Ґ¤­Ёе n жЁда. Ќ ©-
вЁ зЁб«® бз бв«Ёўле Ї®б«Ґ¤®ў вҐ«м­®б⥩ ¤ ­­®© ¤«Ё­л.

ђҐиҐ­ЁҐ. (‘®®ЎйҐ­® ®¤­Ё¬ Ё§ гз бв­ЁЄ®ў ®«Ё¬ЇЁ ¤л; Є ᮦ «Ґ-
­Ёо, ­Ґ ¬®Јг гЄ § вм д ¬Ё«Ёо, в Є Є Є а Ў®вл Їа®ўҐап«Ёбм § иЁд-
а®ў ­­л¬Ё.) ђ бᬮваЁ¬ Ў®«ҐҐ ®Ўйго § ¤ зг: ­ ©вЁ зЁб«® Ї®б«Ґ¤®-
ў вҐ«м­®б⥩, Ј¤Ґ а §­Ёж  ¬Ґ¦¤г б㬬®© ЇҐаўле n жЁда Ё б㬬®©
Ї®б«Ґ¤­Ёе n жЁда а ў­  k (k = -9n,..., 9n). Џгбвм T(n, k) - зЁб-
«® в ЄЁе Ї®б«Ґ¤®ў вҐ«м­®б⥩.
ђ §®ЎмҐ¬ ¬­®¦Ґбвў® в ЄЁе Ї®б«Ґ¤®ў вҐ«м­®б⥩ ­  Є« ббл ў
§ ўЁбЁ¬®бвЁ ®в а §­Ёжл ¬Ґ¦¤г ЇҐаў®© Ё Ї®б«Ґ¤­Ґ© жЁда ¬Ё. …б«Ё
нв  а §­Ёж  а ў­  t, в® а §­Ёж  ¬Ґ¦¤г б㬬 ¬Ё ЈагЇЇ Ё§ ®бв ўиЁе-
бп n-1 жЁда а ў­  k-t. “зЁвлў п, зв® Ї а жЁда б а §­®бвмо t Ўл-
ў Ґв 10 - (¬®¤г«м t), Ї®«гз Ґ¬ д®а¬г«г
T(n,k) = б㬬  Ї® t ®в -9 ¤® 9 зЁбҐ« (10-|t|) * T(n-1, k-t).
(ЌҐЄ®в®алҐ б« Ј Ґ¬лҐ ¬®Јгв ®вбгвбвў®ў вм, в Є Є Є k-t ¬®¦Ґв Ўлвм
б«ЁиЄ®¬ ўҐ«ЁЄ®.)
Соседние файлы в папке Шень