Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function all_subsets2(X)
- % Функция выводит все подмножества Y множества X
- % Пример вызова функции в консоли: all_subsets2([1,2,3,4,5])
- len_X = length(X); % Мощность множества X
- include = zeros(1, len_X); % Массив, отвечающий за включение i-го элемента в подмножество
- % Каждому элементу ставим 1, если он входит в подмножество, иначе ставим 0
- % Получаем последовательности из нулей и единиц
- for num = 0 : 2^len_X-1 % Перебор k - значных чисел в двоичной системе счисления
- t = num; % Копируем число во временную переменную
- Y = zeros(1, len_X); % Подмножество Y
- len_Y = 0; % Мощность подмножества Y
- for i = len_X:(-1):1 % Разбор числа на разряды: нули и единицы
- include(i) = mod(t, 2); % Крайняя правая цифра числа
- t = fix(t / 2); % Смещение числа на один разряд вправо
- if ( include(i) == 1 ) % Если элемент включен в подмножество
- len_Y = len_Y + 1; % увеличиваем мозность подмножества Y
- Y(len_Y) = X(i); % Добавляем элемент в подмножество
- end
- end
- Y = Y(1:len_Y); % Вырезаем только ненулевые, добавленные нами элементы
- disp(Y); % Выводим Y на экран
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement