|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Vitaly Slobodskoy 2:5015/128.22 29 Dec 2001 01:03:58 To : Alexey Danov Subject : Re: разбиение множества --------------------------------------------------------------------------------
AD> const
AD> M : array[0..3] of char = ('1','2','3','4'); // или в обратном порядке
AD> Long = 4;
AD> var
AD> i,j : integer;
AD> S:string;
AD> // вывод всех подмножеств
AD> for i := 0 to 1 shl Long-1 do begin
AD> // для исключения пустого и полного [1,1 shl Long-2]
AD> S := '{';
AD> for j := 0 to Long-1 do
AD> if i shr j and 1 = 1 then S:=S+M[j]+',';
AD> Memo1.Lines.Add(S+'}');
AD> end
AD> end;
В данном случае лучше не использовать битовую арифметику, т.к. n может быть
гораздо больше 16(32) и тогда все твое решение вылетит... Правильнее будет
использовать массивчик типа boolean с кол-вом элементов, объявленных в const с
начальным значением, например, 100...
ПОКА!
--- F.I.P.S./32 v1.0r W95/NT [M]
* Origin: Жить вредно - от этого умирают! (2:5015/128.22)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/39083c2cde3e.html, оценка из 5, голосов 10
|