![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Регистрация: 06.12.2010
Сообщений: 3
|
![]()
известно количество нулей и количество единиц в двоичном числе. вывести все возможные числа составленные из этих ноликов и единичек.
/язык программирования - паскаль/ буду оч благодарен ![]() |
![]() |
![]() |
![]() |
#2 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,837
|
![]()
Это можно решить так:
1. Выписываем сначала число, где первыми идут все нули, затем все единицы. 2. Двигаем правый нолик вправо по 1 разряду. 3. Повторяем тоже самое для следующего нолика. 4. И так, пока все нолики не передвинем в правую сторону. Пример для 2-х нулей и 2-х единиц: 0011 0101 0110 1010 1100 Программно сами подумайте как такое реализовать. E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
> 0011
строго говоря, это число не составлено из двух нулей и двух единиц. Что ещё хуже, алгоритм не генерирует такое число, например: 1001
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
ребят, Вы меня, конечно, извините, но разве не проще (алгоритмически) банально перебрать все числа от нуля до Max(целое в данном типе) и проверять, если количество единичек в числе равно заданному - выводить/считать данное число.
p.s. я понимаю, что это неоптимально с точки зрения быстродействия, зато просто, понятно и реализуется в несколько строк кода! p.p.s. в условия данной задачи ОБЯЗАТЕЛЬНО должно быть указан тип (размерность в байтах) получаемых чисел. Иначе задача НЕ ИМЕЕТ решения (при числе единиц больше нуля, разумеется! ![]() |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
Смотря сколько бит надо перебирать. Если 128, то можно и не дождаться в этой жизни )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#6 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
но, с другой стороны, Цитата:
![]() |
||
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
Для 60 единиц шансов нет, а для 4-5 есть )
> нет типов данных с целыми числами 128битной длины Кстати зря, что нет. 128-битные XMM регистры ещё в третьем пне появились. И разница с полным перебором может впечатлять ) Вот допустим задано 63 нуля и 1 единица. Это всего 64 комбинации, а полным перебором прийдётся просмотреть все 2^64 комбинаций.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
Последний раз редактировалось veniside; 16.02.2011 в 14:45. |
![]() |
![]() |
![]() |
#8 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Все возможные размещения чисел от 2 до n | mariafors | Общие вопросы C/C++ | 3 | 25.12.2010 21:19 |
находит одно решение а нужно все возможные | specnazkin | Помощь студентам | 5 | 21.11.2010 09:28 |
Все возможные варианты строки | Vikenty | Общие вопросы Delphi | 3 | 29.08.2010 03:30 |
графы - Все возможные пути | manuk | Помощь студентам | 9 | 23.05.2010 23:58 |
Все возможные слагаемые | anGeee | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 04.12.2008 20:22 |