![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Пользователь
Регистрация: 10.08.2011
Сообщений: 10
|
![]()
Мы берем подпоследовательность длины k значит мы должны найти похожую подпоследовательность в которую входят все k элементов в нужном порядке. Критерий похожести состоит в том, чтобы были все k элементов последовательности, в том же порядке, и между элементами не было мусора более чем по 2. И даже если после каждого успешного элемента будет стоять 2 мусора, и мусора получится 2k-4, то все равно такая последовательность будет похожей. Конечно, желательно, чтобы можно было изменять критерий похожести - 0 мусора между элементами, 1,2...
Последний раз редактировалось Tolyman; 11.08.2011 в 16:15. |
![]() |
![]() |
![]() |
#12 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
ну наконец-то, вытащили из вас клещами описание задачи )
Код:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#13 |
Пользователь
Регистрация: 10.08.2011
Сообщений: 10
|
![]()
Спасибо. Дома попробую разобраться.
|
![]() |
![]() |
![]() |
#14 |
Пользователь
Регистрация: 10.08.2011
Сообщений: 10
|
![]()
Извини за необразованность но последний вопрос: в какой среде скомпилировать твою программу?
|
![]() |
![]() |
![]() |
#15 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
желательно в Delphi, можно и под free pascal/Lazarus
а можно и в Борланд Паскале под ДОС (с небольшими изменениями) тут даже не сколько важно скомпилировать, а просто понять, что и как она делает. 1) формируется массив seq из N случайных чисел 2) индекс j пробегает от 0 до N - K, и если j не попадает внутрь самой подпоследовательности (в диапазон от B до B + K - 1), и если первая цифра подпоследовательности (seq[B]) совпадает с seq[j], то вызывается процедура tryThis(j) 3) tryThis уже по переданному ей индексу пытается проверить, можно ли построить начиная с этого индекса подпоследовательность, учитывая, что могут быть от 0 до M "леывх" элементов между каждым подходящим. 4) если построить удалось, tryThis возвращает True и заодно длину получившейся подпоследовательности (включая мусор). Длина затем сравнивается с "лучшей" длиной (bestLen) и если она короче, то bestLen обновляется (вместе с bestIndex). 5) в конце выдается индекс "лучшей" по длине подпоследовательности, или "No luck", если ничё не нашлось.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#16 |
Пользователь
Регистрация: 10.08.2011
Сообщений: 10
|
![]()
В структуре программы я разобрался, она просто прелесть. Просто БП не знает например что такое pIntegerArray, try - finally(а это не знает фри паскаль), Делфи матюкнулся на то что не описан type. И еще где нужно описать result? Я вроде как попробывал переделать под ТП, но еще не успел проверить. Я его описал как булин в самой функции возле этих
var c, t, o1: Integer; Последний раз редактировалось Tolyman; 12.08.2011 в 14:37. |
![]() |
![]() |
![]() |
#17 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Это биологические алгоритмы, направлены на поиск цепочек ДНК. Советую копать в том направлении
![]()
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#18 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
pIntegerArray можно заменить на
Код:
Да, result можно описать как локальную boolean переменную, в конце не забыть tryThis := result; И да, алгоритм не то, что не оптимальный, он просто в лоб. Если N, К или М будут на несколько порядков больше, нужно что-то думать. Или если B (начало подпоследовательности) заранее неизвестно (т.е. предполагается, что его будут подбирать), тут всё немного сложнее (если хочется оптимально).
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#19 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
ну и сразу добавлю.
в случае: Цитата:
там общий размер всех переменных не может превышать 64 кб поэтому такой код не откомпилируется. Надо брать Delphi (рекомендую), ну или FreePascal... вот код консольной программы под Delphi (и под FreePascal после правильного импорта скорее всего тоже откомпилируется!) Код:
Последний раз редактировалось Serge_Bliznykov; 12.08.2011 в 15:18. |
|
![]() |
![]() |
![]() |
#20 |
Пользователь
Регистрация: 10.08.2011
Сообщений: 10
|
![]()
Я сразу N уменьшил до 10000. И запустил на ТП. Все нормально. Теперь нужно сделать, чтобы брало данные из файла, а потом записывало в файл, но надеюсь это я смогу сделать. Спасибо Вам всем.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
С\С++ Дана последовательность чисел. Найти количество различных чисел в этой последовательности | yuliyayuliya | Помощь студентам | 1 | 14.04.2011 06:30 |
Сравнение двух листов и вывод в определённой последовательности | ОlGa | Microsoft Office Excel | 1 | 29.01.2010 21:06 |
Определить k-ую цифру последовательности Фибоначчи и последовательности натуральных чисел. | Med | Помощь студентам | 1 | 20.03.2009 11:40 |
обмен чисел последовательности | maziLa | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 09.12.2008 00:15 |
вычисление суммы чисел, кратных 3 из последовательности, состоящей из 10 чисел, заранее заданных | Белка | Помощь студентам | 3 | 27.10.2007 11:53 |