crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как организовать быстрейший подсчет вот по такому алгориму ?
AntonTatu
  опции профиля:
сообщение 18.11.2011, 9:56
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 27.11.2008
Пользователь №: 437

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем привет !!!

Некий алгоритм постоянно генерирует строки, каждая строка может содержать пробелы и цифры от 0 до 10 к примеру:

"0 0 2 3 0 5 "
" 4 5 8 9 3 0"
"9 8 6 8 4 3 7 6 2 9 10"

создаю список в котором буду сохранять следующую структуру: принятая строка, количество повторений...
т.е. получая i -ю строку необходимо:
посмотреть есть ли такая строка в списке (все равно как список будет организован, лишь бы работало максимально быстро)
если такой строки нет, добавляю в список
если такая строка есть увеличиваю для нее счетчик повтора на 1


на выходе получается вот такой список:
строка повторов
"0 0 2 3 0 5 " 2
" 4 5 8 9 3 0" 10
"9 8 6 8 4 3 7 6 2 9 10" 0

мне нужно что бы алгоритм работал максимально быстро, т.к. строк будет много их длинна не ограничена, и повторов ожидается то же много....

Заранее спасибо !!!!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ssoft
  опции профиля:
сообщение 18.11.2011, 10:30
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 17.2.2010
Из: Москва
Пользователь №: 1470

Спасибо сказали: 30 раз(а)




Репутация:   3  


Можно использовать QHash< QString, int >.

typedef QHash< QString, int > Values;

Values values;

QString line = ...; //полученная строка

Values::iterator iter = values.find( line );
if ( iter == values.end() )
    values[ line ] = 1;
else
    values[ line ] += 1;

...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 18.11.2011, 10:36
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(ssoft @ 18.11.2011, 11:30) *
Можно использовать QHash< QString, int >.

Зачем лишние проверки? Можно просто:
typedef QHash< QString, int > Values;

Values values;

QString line = ...; //полученная строка

values[ line ]++;
...


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ssoft
  опции профиля:
сообщение 18.11.2011, 13:05
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 17.2.2010
Из: Москва
Пользователь №: 1470

Спасибо сказали: 30 раз(а)




Репутация:   3  


Цитата(BRE @ 18.11.2011, 11:36) *
Цитата(ssoft @ 18.11.2011, 11:30) *
Можно использовать QHash< QString, int >.

Зачем лишние проверки? Можно просто:
typedef QHash< QString, int > Values;

Values values;

QString line = ...; //полученная строка

values[ line ]++;
...



Да, согласен, не выспался. ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 12.12.2024, 8:10