Function bin(n: integer;): string; // Функция перевода в двоичную с.с.
...
Function step(a, n: integer;): longint; // Функция возведения в степень
...
Var ...;
Begin
...
//a - массив подмножества которого надо найти
For i:=0 to step(2, l) - 1 do
begin
binar:= bin(i);
for j:=1 to l do if binar[j] = '1' then write(a[j]);
writeln;
end;
...
End.
示例:
a = ['a', 'b', 'c']
i = 5
bin(i) = '101'
子集 - ('a', 'c')
控制台输出 - ac
我们从该行:
第一个元素 - 统一,输出数组的第一个元素a。
第二个元素为零,我们不输出任何东西。
第三个元素是一个,我们将显示数组的第三个元素a。
要遍历所有子集,请使用二进制枚举。
算法:
简而言之,代码是:
示例:
a = ['a', 'b', 'c']
i = 5
bin(i) = '101'
子集 - ('a', 'c')
控制台输出 - ac
我们从该行:
第一个元素 - 统一,输出数组的第一个元素
a。第二个元素为零,我们不输出任何东西。
第三个元素是一个,我们将显示数组的第三个元素
a。