найти все подмножества массива, имеющие подмножество размера больше или равного 2 - PullRequest
0 голосов
/ 15 мая 2018

Приведенный ниже код печатает все подмножества, но мне нужно, чтобы размер был больше или равен 2.

public static void printSubsets(char set[])
{
    int n = set.length;

    for (int i = 0; i < (1<<n); i++)
    {
        System.out.print("{ ");

        for (int j = 0; j < n; j++)

            if ((i & (1 << j)) >0 )
                System.out.print(set[j] + " ");

        System.out.println("}");
    }
}

1 Ответ

0 голосов
/ 15 мая 2018

Подмножество размера 0 соответствует i == 0.Чтобы устранить пустое подмножество, начинайте с i = 1.

Подмножество размера 1 соответствует i, имеющему ровно один установленный бит;или, что то же самое, когда это степень 2цикл и просто вставьте эту проверку:

if (Integer.bitCount(i) < 2) {
    continue;
}

Это не так умно или эффективно, но это приятно и читабельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...