В этот день, то есть **воскресенье, 23 июня 2019**, я столкнулся с проблемой на одном из сайтов соревновательного кодирования. Он попросил меня написать наборы мощности, которые можно сформировать из массива. Я порылся в сети и нашел действительно хороший алгоритм, который, я уверен, известен большинству из вас, но просто для собственного удовольствия я также пишу концепцию здесь.

Предположим, у меня есть массив:

a = [x, y, z] // Я хочу найти набор мощности этого,

Шаг 1: Найдите возможное количество наборов мощности, используя формулу: pow(2, sizeOf(array a)

Шаг 2: повторите результат, полученный на шаге 1, каждая итерация будет иметь битовое представление. Например: если имеется 8 наборов мощности, каждая итерация будет состоять из номера битового представления, имеющего количество битов = sizeOf (массив a).

Поэтому у нас будет 000 на первой итерации (i = 1) и 001 на второй итерации (i = 2) и так далее до 111.

Шаг 3: Если i th бит установлен в i th итерации. Тогда элемент в i й позиции в массиве a будет присутствовать в наборе мощностей текущей (i й) итерации.

Таким образом, мы можем найти наборы мощности. Спасибо за чтение.