Изменения

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

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

1044 байта убрано, 21:27, 9 декабря 2010
Нет описания правки
'''Коды Грея для перестановок''' - называют такое упорядочение перестановок, что соседние перестановки отличаются только элементарной транспозицией.
== '''Построения Кода Грея для перестановок на Pascal''' == for i := 1 to n do begin P[i] := i; //перестановка C[i] := 1; //показывает, какую из возможных n - i + 1 позиций i занимает относительно элементов i + 1, .., n PR[i] := true; //содержит информацию о том, переносился ли элемент i вперед или назад end; C[n] := 0; for g := 1 to n - 1 do write(P[g], ' '); writeln(P[n]); i := 1; while i < n do begin i := 1; x := 0; while C[i] = n - i + 1 do begin PR[i] := not PR[i]; C[i] := 1; if PR[i] then x := x + 1; i := i + 1; end; if i < n then begin if PR[i] then k := C[i] + x else k := n - i + 1 - C[i] + x; swap(P[k], P[k + 1]); // меняем местами значения P[k] и P[k + 1] for g := 1 to n - 1 do write(P[g], ' '); writeln(P[n]); C[i] := C[i] + 1 end; end;
152
правки

Навигация