![]() |
|
Модераторы: bsa |
![]()
|
|
| User008 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 306 Регистрация: 9.9.2009 Репутация: нет Всего: 1 |
Какая структура будет наиболее подходящей для решения следующей задачи: Элементы имеют счётчик. При обращении к элементу его счётчик инкрементируется. В первую очередь обращение происходит к элементам с наибольшим значением счётчика.
Пример: ABCD 3321 s[2] - C CABD 3331 s[1] - A ACBD 4331 s[0] - A ACBD 5331 Это сообщение отредактировал(а) User008 - 11.3.2010, 08:58 |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
каждый элемент надо завернуть в чтото типа
|
|||
|
||||
| User008 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 306 Регистрация: 9.9.2009 Репутация: нет Всего: 1 |
Не нахожу в этом ответе решения. Можно поподробнее? |
||||
|
|||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
наверное я не так понял задачу %)
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
User008, вообще-то задание не очень понятно. В частности, не ясно, о элементах чего идет речь. В общем случае, элемент представляется в виде структуры, одним из полей которой будет счетчик... В принципе, это показал GoldFinch в виде шаблона.
|
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
Счетчик увеличивается при обращении, обращается всегда к элементу с наибольшим значением счетчика ... всегда к одному и тому же получится, так-как если ты обращаешься к элементу с наибольшим значением счетчика - после инкремента он только утвердит свою позицию в списке. |
|||
|
||||
| User008 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 306 Регистрация: 9.9.2009 Репутация: нет Всего: 1 |
К одному и тому же получится, если обращаться каждый раз с аргументом 0. Если аргумент = 1, то обращение будет ко второму по величине счётчика элементу, если 2 - к третьему...
|
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
User008
Тогда в чем проблема? Создай класс, в нем массив
что-то вроде этого. |
|||
|
||||
| User008 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 306 Регистрация: 9.9.2009 Репутация: нет Всего: 1 |
||||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
так пойдет? идея в том, чтобы хранить отсортированный массив (по счетчику), возвращается объект, находящийся по затребованному тобой уровня счетчика. Может есть баги, не тестировал, просто набросал быстро Это сообщение отредактировал(а) azesmcar - 11.3.2010, 20:02 |
|||
|
||||
| User008 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 306 Регистрация: 9.9.2009 Репутация: нет Всего: 1 |
У меня подозрение, что если при такой реализации при состоянии 1 1 1 обратиться к третьему элементу получится 1 2 1 вместо 2 1 1.
|
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
| User008 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 306 Регистрация: 9.9.2009 Репутация: нет Всего: 1 |
Такое решение приходило в голову. Но я реализовал не вектором со swap'ами, а списком с поиском элемента по сравнению счётчиков и перемещением туда элемента, к которому обратились. Но по возможности желательно увеличить производительность. Быстрее ли будет реализация с вектором и swap'ами?
|
|||
|
||||
| User008 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 306 Регистрация: 9.9.2009 Репутация: нет Всего: 1 |
Действительно так намного быстрее, спасибо.
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |