94
правки
Изменения
Нет описания правки
Пусть нам известен код Грея для длины $n-1$, записанный в массив pred_perest[i](j), где $i$ - номер перестановки, $j$ - номер элемента этой перестановки (номерация начинается с единицы).
t := false; {булевская переменная отвечающая за порядок перебора true: от начала к концу false: от конца к началу} for i := 1 to (n-1)! do for k:=1 to n do begin {перебираем все прошлые перестановки}
if t = true then
begin
writeln(pred_perest[i]);
for j := 1 to n - 1 do {для каждой перестановки делаем n - 1 транспозиций}
begin
swap(pred_perest[i](j), pred_perest[i](j + 1)); {меняем j и j + 1 элементы местами}
t := false;
writeln(pred_perest[i]);
end;
end
else
begin
writeln(pred_perest[i]);
for j := n - 1 downto 1 do
begin
swap(pred_perest[i](j), pred_perest[i](j + 1)); {меняем j и j + 1 элементы местами}
t := true;
writeln(pred_perest[i]);
end;
end;
== См. также ==