Изменения

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

Динамическое программирование по профилю

403 байта добавлено, 23:43, 14 января 2015
Пример
<font color=green>//Для профиля (p, i) выводятся все переходы из него (нумерация горизонталей начинается с нуля и i = 0..n - 1)</font>
<font color=green>// Функция bit(x,i), возвращающая единицу или ноль или i-й бит в двоичной записи числа x</font>
'''print_all_links'''(<tex>\mathtt{p}</tex>, <tex>\mathtt{i}</tex>): '''if''' <tex>\mathtt{bit}(\mathtt{p, \mathtt{i } + \mathtt{1}}) == \mathtt{0}</tex> '''if''' <tex>\mathtt{i } == \mathtt{n } - \mathtt{1}</tex> '''println'''<tex>((\mathtt{p } - (\mathtt{2 } \verb|<< | \mathtt{i})) \verb|<< | \mathtt{1}</tex>, " ", <tex>\mathtt{0})</tex>
'''else'''
'''println'''<tex>(\mathtt{p } - (\mathtt{2 } \verb|<< | \mathtt{i})</tex>, " ", <tex>\mathtt{i } + \mathtt{1})</tex>
'''else'''
'''if''' <tex>\mathtt{bit}(\mathtt{p}, \mathtt{i}) = \mathtt{0}</tex> '''if''' <tex>\mathtt{i } == \mathtt{n } - \mathtt{1 } </tex> '''println'''<tex>((\mathtt{p} \verb|<< | \mathtt{1})</tex>, " ", <tex>\mathtt{0})</tex>
'''else'''
'''println'''<tex>(\mathtt{p } + (\mathtt{1 } \verb|<< i| \mathtt{n})</tex>, " ", <tex>(\mathtt{i } + \mathtt{1}) % \mathtt{n})</tex> '''if''' <tex>\mathtt{i } < \mathtt{n } - \mathtt{1}</tex> && <tex>\mathtt{bit}(\mathtt{p, \mathtt{i } + \mathtt{2}}) == \mathtt{0}</tex> '''println'''<tex>(\mathtt{p } + (\mathtt{4 } \verb|<< | \mathtt{i})</tex>, " ", <tex>\mathtt{i } + \mathtt{1})</tex>
[[Файл:ok.jpg|640px|thumb|left|Возможные переходы]]
49
правок

Навигация