![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Есть массив из 256 битов
Нужно найти место в массиве где больше всего единичных битов. Как это сделать оптимальнее? |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Больше всего что? Подряд?
|
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
есть книга "Алгоритмические трюки для программистов". Генри Уоррен, мл.
она полностью посвящена битам. подсчёт, деление, перестановка и т.д. возможно в ней будет ответ. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| inside_pointer |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 5 Всего: 12 |
находишь точку 0xF, если нет находишь 0xE ну и т.д.
когда нашёл делаешь то же самое для примыкающих слева и справа (слева для всех 1***, справа для всех ***1) смахивает на бинарное дерево |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Осносвной вариант алгоритма с стр. 75 я и так знал, но книга довольно интересная.
Нужно примерно это (неоптимально):
|
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
math64
по моему так лучше Добавлено через 8 минут и 1 секунду
неверно понял вопрос... Добавлено через 11 минут и 52 секунды я не особо понял в таком случае..что значит больше всего? если подряд, тогда делай шифт вправо пока на ноль не наткнешся, как наткнешся обнуляй счетчик..не пойдет? Это сообщение отредактировал(а) azesmcar - 19.3.2009, 09:38 |
||||
|
|||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Модем передаёт тестовое сообщение используя фазу = 0 ... 255. В результате получаем массив из 256 бит, 1 если сообщение успешно принято. Нужно определить какую фазу лучше использовать.
|
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
а не проще использовать bitset\vector<bool>?
|
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
нет, всё будет работать на микропроцессоре с компилятором C без плюсов, желательно без умножения/деления и плавающей точки.
Вот алгоритмы из книги которые могут быть полезны:
|
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
чем писать на С такой изврат проще написать на асме этого МК, код выйдет компактнее и прозрачнее
|
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
math64, я все еще не понимаю..что именно нужно подсчитать? найти место где больше всего 1 битов подряд???
|
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
math64, простенький алгоритм придумал:
битовую последовательность я рассматриваю от старшего бита к младшему. Это сообщение отредактировал(а) zim22 - 19.3.2009, 13:13 |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Нужно ещё добавить проверку что максимальная последовательность бит оказалась в конце массива
|
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
math64, перед строкой с cout добавьте
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |