Найдите все комбинации k-битных чисел с набором n бит, где 1 <= n <= k в отсортированном порядке

Опубликовано: 20 Января, 2022

Для числа k найдите все возможные комбинации k-битных чисел с набором n бит, где 1 <= n <= k. Решение должно сначала вывести все числа с одним установленным битом, а затем числа с двумя установленными битами,… до чисел, все k-биты которых установлены. Если два числа имеют одинаковое количество установленных битов, то первым должно идти меньшее число.

Примеры:

Ввод: K = 3
Выход: 
001 010 100 
011 101 110 
111 

Ввод: K = 4
Выход: 
0001 0010 0100 1000 
0011 0101 0110 1001 1010 1100 
0111 1011 1101 1110 
1111 

Ввод: K = 5
Выход: 
00001 00010 00100 01000 10000 
00011 00101 00110 01001 01010 01100 10001 10010 10100 11000 
00111 01011 01101 01110 10011 10101 10110 11001 11010 11100 
01111 10111 11011 11101 11110 
11111 

Рекомендуется: сначала попробуйте свой подход в {IDE}, прежде чем переходить к решению.

Нам нужно найти все возможные комбинации k-битных чисел с n установленными битами, где 1 <= n <= k. Если мы внимательно проанализируем, то увидим, что проблему можно разделить на подзадачи. Мы можем найти все комбинации длины k с n единицами, добавив 0 ко всем комбинациям длины k-1 с n единицами и 1 ко всем комбинациям длины k-1 с n-1. Мы можем использовать динамическое программирование, чтобы сохранить решения подзадач.

Ниже представлена реализация вышеупомянутой идеи на С ++ -

Выход:

00000 
00001 00010 00100 01000 10000 
00011 00101 00110 01001 01010 01100 10001 10010 10100 11000 
00111 01011 01101 01110 10011 10101 10110 11001 11010 11100 
01111 10111 11011 11101 11110 
11111

Эта статья предоставлена Адитьей Гоэлем . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью на сайте deposit.geeksforgeeks.org или отправить свою статью по электронной почте: grant@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.

Вниманию читателя! Не прекращайте учиться сейчас. Освойте все важные концепции DSA с помощью самостоятельного курса DSA по приемлемой для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .

Если вы хотите посещать живые занятия с отраслевыми экспертами, пожалуйста, обращайтесь к Geeks Classes Live и Geeks Classes Live USA.

РЕКОМЕНДУЕМЫЕ СТАТЬИ