Найти все подмножества

Постановка задачи

Нам дан набор целых чисел, и мы должны найти все возможные подмножества этого набора целых чисел. В следующем примере это более подробно рассматривается.

Подсказка

  • Угадайте количество подмножеств для набора размером ‘n’
  • Комбинации

Попробуйте сами

  • C ++
  • путь> C ++
  • C ++
  • Java
  • Java
  • h> Python
  • Python
  • JavaScript
  • JavaScript
  • Ruby
  • Ruby
 void get_all_subsets (vector  & v, vector > & sets) {//ЗАДАЧИ: Запись  - Ваш - Код} 

Решение

  • C ++
  • C ++
  • C ++
  • Java
  • Java
  • Python
  • Python
  • JavaScript
  • путь> JavaScript
  • Ruby
  • Ruby
 int get_bit (int num, int bit) {int temp = (1  & v, vector > & sets) {int substs_count = pow ((double) 2,  (двойной) v. size ()); for (int i = 0; i  set; for (int j = 0; j  v (myints, myints + sizeof (myints)/sizeof (int)); vector > подмножества; get_all_subsets (v, подмножества); cout  :: итератор it = подмножества [i] .begin (); it! = подмножества [i] .end (); ++ it) {cout  

Объяснение решения

Сложность времени выполнения

Экспоненциальная, O ( 2 n ∗ n ) O (2 ^ {n} * n) O (2 n ∗ n) — где ‘n’ — количество целых чисел в данном наборе.

Сложность памяти

Экспоненциальная, O ( 2 n ∗ n ) O ( 2 ^ {n} * n) O (2 n ∗ n)

Анализ решения

Есть несколько способов решить эту проблему. Обсудим тот, который проще и понятнее. Мы знаем, что для набора n элементов существует 2 n 2 ^ {n} 2 n подмножеств. Например, набор из 3 элементов будет иметь 8 подмножеств. Вот алгоритм, который мы будем использовать:

  n = размер заданного целого числа setsubsets_count = 2 ^ nfor i = 0 в subsset_count формирует подмножество с использованием значения 'i' следующим образом  : биты в номере 'i' представляют собой индекс элементов для выбора из исходного набора, если конкретный бит равен 1, выберите это число из исходного набора и добавьте его в текущее подмножество, например  если i = 6, то есть 110 в двоичном формате, означает, что необходимо выбрать 1-й и 2-й элементы в исходном массиве.  добавить текущее подмножество в список всех подмножеств  

Обратите внимание, что порядок битов для выбора целых чисел из набора не имеет значения; выбор целых чисел слева направо приведет к тому же результату, что и выбор целых чисел справа налево.

Оцените статью
nanomode.ru
Добавить комментарий