Изменения

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

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

43 байта добавлено, 10:48, 7 декабря 2014
Псевдокод
<code>
<font color=darkgreen>//Элементы нумеруются начиная с 1 </font color=darkgreen>
'''list'''<permutation'''list'''<'''int'''> > gray_code(n): '''permutationlist'''<'''int''' > perm = {1, ... \dots , n} '''arraylist'''<''' char'''> dir = {←, ... \dots , ←} '''list'''<permutation'''list'''<'''int'''> > result ('''while''' (true)
result.append(perm); <font color=darkgreen> //добавляем в ответ текущую перестановку</font color=darkgreen>
'''int''' id = -1; <font color=darkgreen> //индекс наибольшего подвижного элемента </font color=darkgreen>
('''for''' (i = 1 '''to''' n)
'''if''' (perm[i] - подвижный) '''and''' ((id == -1) '''or''' (perm[i] > perm[id]))
id = i
'''if''' (id == -1) '''break''' <font color=darkgreen> //не нашли подвижного элемента</font color=darkgreen>
('''for''' (i = 1 '''to''' n){
'''if''' (perm[i] > perm[id])
reverse(dir[i]) <font color=darkgreen> //меняем направление стрелки</font color=darkgreen>
130
правок

Навигация