91
 правка
Изменения
→Специализация алгоритма для генерации следующего разбиения на подмножества
непересекающихся подмножеств множеств.
}}
Например для <tex>n = 5 </tex> существуют следующие разбиения:
<tex> \{1, 2, 3, 4, 5\}</tex>
<tex> \{1\}~\{2\}~\{3\}~\{4\}~\{5\}</tex>
и т. д., всего таких разбиений для <tex>n = 5 </tex> существует 52.
'''Примечание:'''
'''Рассмотрим алгоритм нахождения лексикографически следующего разбиения на подмножества:'''
*Будем хранить подмножества с помощью двумерного массива, например, разбиение <tex> \{1, 2, 3\} ~ \{4, 5\} </tex> будет выглядеть так:
{| class="wikitable" border = 1
<code>
 // a sets - матрица содержащая подмножества
 // used - массив в котором мы храним, удаленные элементы
 '''for ''' i = n '''downto ''' 0     '''if '''  /*можем добавить в конец подмножества элемент из used*/          // добавляем         '''break;'''     '''for ''' j = a[i].size() - 1 '''downto ''' 0         '''if /* ''' можем заменить элемент, другим элементом из массива used*/ 
            //заменяем
            '''break;'''
         used.add(a[i][j]);   //удаляем элемент и добавляем его в массив
</code> 
