Изменения

Перейти к: навигация, поиск

Коды Грея для перестановок

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

Навигация