130
правок
Изменения
→Псевдокод
=== Псевдокод ===
<code>
<font color=darkgreen> //Элементы нумеруются начиная с 1 </font color=darkgreen> '''list'''<permutation> gray_code(n): '''permutation''' p = {1, ... , n} '''array''' d = {←, ... , ←} ('''while''' (true){ print(); <font color=darkgreen>// печатаем текущую перестановку</font color=darkgreen> '''int''' id = -1; <font color=darkgreen>// индекс наибольшего подвижного элемента </font color=darkgreen> ('''for''' i = (1 .. '''to''' n){ '''if''' (p[i] - подвижный) '''and''' ((id == -1) '''or''' (p[i] > p[id])) id = i } '''if''' (id == -1) '''break''' <font color=darkgreen>// не нашли подвижного элемента</font color=darkgreen> ('''for''' i = (1 .. '''to''' n){ '''if''' (p[i] > p[id]) reverse(d[i]) <font color=darkgreen>// меняем направление стрелки</font color=darkgreen> } swap(id) <font color=darkgreen>//меняем элемент p[id], d[id] c элементом по направлению стелки</font color=darkgreen> }
</code>