![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| nikitosinasuperman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 20.11.2005 Репутация: нет Всего: нет |
Подскажите пожалуйста, как правильно организовать алгоритм нахождения всех двоичных чисел определенного разряда вот должно быть так:
000 001 010 100 - вот тут момент. если по правилу сложения двоичных чисел, то должна быть строка 011 вместо 100. и тд до 111 Но я немного покуражился, и сделал для 3-х разрадного числа алгоритм, помогиче написать для любого разряда алгоритм:
|
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
Какова максимальная разрядность будет?
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| nikitosinasuperman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 20.11.2005 Репутация: нет Всего: нет |
а это имеет значение? ну для
10-ти |
|||
|
||||
| pablo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 12.2.2005 Где: Вильнюс, Литва Репутация: 4 Всего: 6 |
Я могу предложить следующее:
Например для 10 да и в общем для любого разряда: сначала записываем такое число нулей, числа которого разряда надо найти, например для 10 это будет 0000000000, затем, заменяем самый правый(левый) нуль на 1, получаем 0000000001, потом двигаем эту единицу, влево: т.е, вместо левого нуля, ставим 1, пока не достигнем левого(правого) конца строки, соодтветсвенно получаем числа: 000000010, 000000100, 0000010000, и т.д. Потом производим выше описанную операцию но уже немного по другому, ставим на 2 самые правые(левые) позиции 2 единицы и двигаем самую левую единицу вправо, потом единицу которая стоит правее и т.д, т.е получим числа примерно такие: 0000000011, 0000000101, 0000001001, 0000010001, ..., 1000000001, потом чиля такого вида: 1000000010, 1000000100 1000001000 ... Проведя операцию для числа единиц равному порядку числа, мы найдём все возможные комбинации. -------------------- Первый блин всегда похож на сферу, иногда бывает и куб. |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
проще организовать прибавление единицы в двоичном коде:
если разряд, к которому добавляется единица нулевой, то просто меняем его на 1 если 1 - меняем на 0 и добавляем единицу уже к следующему разряду пример: 101 001//начинаем с добавления единицы ксладшему разряду ------ 100//если была единица, меняем на ноль 010//и прибавляем уже к следующему 100 001 ------ 101//если был ноль - просто меняем на ноль и больше ничего не делаем... -------------------- qqq |
|||
|
||||
| sdeniss |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 3.3.2006 Репутация: нет Всего: 1 |
||||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
естественно вместо стачического массива и шаблона можно использовать дин массивы, вектора и т .д для больших _N будет работать медленно -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
я там читал одну про реализацию сложения длинных чисел с помощью БПФ - она имеется в виду? если да, то тут, как мне кажется, несколько другая ситуация: прибавление произвольного числа действительно можно ускорить спомощью БПФ, но прибавление одной единицы имеет сложность, пропорциональную длине числа, так что БПФ вряд ли его ускорит (т.к. у него n*log n) -------------------- qqq |
|||
|
||||
| darkart |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 379 Регистрация: 9.11.2005 Репутация: 2 Всего: 31 |
Это сообщение отредактировал(а) darkart - 20.3.2006, 19:30 |
|||
|
||||
| nikitosinasuperman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 20.11.2005 Репутация: нет Всего: нет |
Сеня с универа приехал, осенило. написал сложением единиц. захожу сюда, а тут такую идею предложил максим
зацените:
в нем может что-то не так? пишите |
|||
|
||||
| Doc_d0s |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 15.12.2004 Где: в кресле Репутация: 2 Всего: 3 |
методом деление, только вот узнать с какого разряда писать, можно загнать в цикл и проверить, если будет не лень накидаю код и скину
--------------------
Админ- это вождь Apache'й :) |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |