Порождение подмножеств

Сможете пж объяснить данный алгоритм, а то я вообще его не могу понять. Читал уже на geeksforgeeks([Backtracking to find all subsets - GeeksforGeeks]) про порождение подмножеств и еще больше запутался)

Ну смотри. Всего у нас сколько подмножеств, если у нас числа от 1 до n. Будет 2 ^ n, так как каждое число мы можем взять или не взять в подмножество.
Теперь давай о коде. Каждый раз когда рекурсия работает в ней хранится какое то подмножество и также в рекурсии мы передаем значение какого то х. В какой то момент когда у нас х мы можем его взять или не взят. Если мы его взяли то давай просто запустим рекурсию в search(x + 1). И тогда рекурсия посетит состояние с х + 1 и в нашем векторе subset будет храниться x + 1, а потом рекурсия запускается без числа х + 1.


Вот как то так оно выглядит по идее.

Ты мог бы переписать код оттуда и запустить и чекнуть как он работает еще

3 симпатии