В этот день, то есть **воскресенье, 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 й) итерации.
Таким образом, мы можем найти наборы мощности. Спасибо за чтение.