|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
31.10.2010, 13:44 | #1 |
Пользователь
Регистрация: 07.10.2010
Сообщений: 43
|
Обработка 1мб текста
помогите пожалуйста нужно обработать 1мб текста за 1сек
"Дан файл, содержащий русский текст. Найти в тексте N<=2000 самых коротких слов, содержащих сочетание из трех алфавитно упорядоченных букв. Записать найденные слова в текстовый файл в порядке неубывания длины. Все найденные слова должны быть разными!" Код:
но есть еще и косяки(( 1-й косяк в том что я что-то не оч понимаю как реализовать поиск самых коротких слов. 2-й косяк есть какой то косяк со словами, точнее откуда прога их берет, если взять NMax=10 то слова будут из разных концов текста.. |
01.11.2010, 19:56 | #3 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Как минимум, используйте SetTextBuf() а лучше - использовать BlockRead Хотя, раз уж Вы пишете под Delphi (используя типы данных, которых не было в Pascal), так используйте TStringList или TFileStream - скорость чтения возрастёт на порядок. по поводу самого алгоритма ничего сказать не могу — тут думать надо Цитата:
если да - то никак - только у модераторов есть такое право... Удачи. |
||
01.11.2010, 20:56 | #4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
вот что нужно: http://ru.wikipedia.org/wiki/%D0%91%...B2%D0%BA%D0%B0
I'm learning to live...
|
|
02.11.2010, 01:06 | #5 |
Пользователь
Регистрация: 07.10.2010
Сообщений: 43
|
Это конечно все замечательно, только вот убрав сортировку вообще, я заметил что выиграть по времени можно только что-то около 5 сотых секунды)))
вот переработанный мой код.. Код:
у меня программа сейчас за 1.4 сек прогоняется, у препода за 3.2, надо чтобы у него за 1.0(((( Очень нужна ваша помощь! |
02.11.2010, 08:11 | #6 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Вы мой пост сознательно игнорируете?!
Прежде всего - откажитесь от чтения по одному символу или, хотя бы, добавьте SetTextBuf p.s. Хотя, конечно, это не решит проблему оптимальности/неоптимальности самого алгоритма... |
02.11.2010, 09:29 | #7 |
Пользователь
Регистрация: 07.10.2010
Сообщений: 43
|
Я Ваш пост не игнорирую, просто я не умею пользоваться такими методами, которые предлагаете, посимвольное считывание - самое быстрое что я могу.
|
02.11.2010, 09:53 | #8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
а написать SetTextBuf и нажать F1 - не догадались? Там и описание, и даже пример!
попробуйте добавть в Ваш код такие строчки (выделены цветом): Код:
|
02.11.2010, 14:15 | #10 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
ну, чуть лучше так:
Код:
Код:
Думаю, что для Вас этого маловато будет. Думаю, что нужно менять сам алгоритм... (как - не знаю, ибо не олимпиец...) Последний раз редактировалось Serge_Bliznykov; 02.11.2010 в 14:20. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Обработка текста | JRcoker | Общие вопросы Delphi | 5 | 31.07.2008 23:35 |
обработка текста | pvleo | Фриланс | 4 | 14.07.2008 05:19 |
Обработка текста | Absent | Помощь студентам | 2 | 20.05.2008 23:17 |
Обработка текста | Absent | Помощь студентам | 1 | 10.05.2008 19:56 |
Обработка текста | GAGARIN-NEW | Общие вопросы Delphi | 7 | 06.10.2007 15:25 |