48
правок
Изменения
Нет описания правки
*n {{---}} количество мест в комбинаторном объекте (например, битовый вектор длины <tex>n</tex>)
*k {{---}} количество различных элементов, которые могут находиться в данном комбинаторном объекте. Для Например, для битового вектора <tex>k=2</tex> : , поскольку возможны только 0 и 1. Все элементы занумерованы в лексикографическом порядке, начиная с 1.
Комбинаторные объекты занумерованы с 0. Переход к нумерации с единицы можно сделать с помощью одной операции декремента перед проходом алгоритма.
'''function''' NumToObjectFuncnum2object(numOfObject: '''int''')
'''for''' i = 1 '''to''' n '''do'''
'''for''' j = 1 '''to''' k '''do'''
*curFree {{---}} если элемент с номером <tex>j</tex> свободен, то он имеет номер curFree среди всех свободных элементов с 1 по <tex>j</tex>
'''function''' NumToPermutationFuncnum2permutation(k: '''int''')
'''for''' i = 1 '''to''' n '''do'''
alreadyWas = k div (n-i)!
*pow(2, n) {{---}} <tex>2^{n}</tex> количество битовых векторов длины <tex>n</tex>
'''function''' NumToBitvectorFuncnum2bitvector(numOfBitvector: '''int''')
'''for''' i = 1 '''to''' n '''do'''
'''if''' numOfBitvector >= pow(2, (n-i))