Изменения

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

Получение следующего объекта

Нет изменений в размере, 19:26, 27 ноября 2014
Специализация алгоритма для генерации следующей мультиперестановки
* Меняем его с минимальным элементом, большим нашего, стоящим правее.
* Переворачиваем правую часть.
'''int[]''' nextMultiperm(int[] b) <font color=green>// <tex>Nn</tex> {{---}} длина мультиперестановки</font> i = N n - 2
'''while''' (i > 0) '''and''' (b[i] >= b[i + 1])
i--
'''if''' i >= 0
j = i + 1
'''while''' (j < N n - 1) '''and''' (b[j + 1] > b[i])
j++
swap(b[i] , b[j])
'''for''' j = i + 1 '''to''' (N n - 1 + i) '''div''' 2 swap(b[j], b[N n - j + i]) '''return'''(b[0..N n - 1])
'''else'''
'''return''' ''null''
Анонимный участник

Навигация