|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.06.2014, 22:16 | #1 |
Форумчанин
Регистрация: 21.05.2014
Сообщений: 121
|
Нахождение палиндрома (TurboPascal)
Задан числовой массив a[n]. Найдите отрезок массива максимальной длины, в котором первое
число равно последнему, второе – предпоследнему и так далее. Если подходящих отрезков несколько, выведите первый по порядку. Формат ввода: первая строка: n. n ≤ 7000. Вторая строка: элементы массива. -maxint ≤ a[i] ≤ maxint Формат вывода: искомый отрезок. input.txt 9 5 3 4 7 4 3 6 6 3 output.txt 3 4 7 4 3 Не проходит 14 тест по времени (1 тест = 1 секунда ,а у меня 85 сек (( ) Код:
|
17.06.2014, 22:26 | #2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
Массив сделать массивом integer и заменить
Код:
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
17.06.2014, 22:33 | #3 |
Пользователь
Регистрация: 15.04.2012
Сообщений: 46
|
хахах. говорил же я, не пройдет по времени!)))
а вообще надо решать задачу за O(n^2); короче вот на с++, там сам разберешься Код:
НИУ СГУ им. Чернышевского
Последний раз редактировалось Stilet; 18.06.2014 в 07:58. |
17.06.2014, 23:01 | #4 | |
Форумчанин
Регистрация: 21.05.2014
Сообщений: 121
|
Цитата:
Код:
|
|
17.06.2014, 23:51 | #5 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
VladKB1, заменить в коде только 2 указанные строки (и тип элементов массива), а всё остальное оставить как есть. Да и способ SlavaSSU можно попробовать.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
18.06.2014, 00:09 | #6 |
Форумчанин
Регистрация: 21.05.2014
Сообщений: 121
|
BDA Большое спасибо теперь оно за 2 сек проходит , но нужно за 1
А про Славин код я разобрался почти но не всё (не селён в С++ , то что подчеркнуто не знаю) int ansl, ansr; int ans = 0; for(int i = 1; i <= n; i++) { int cur = 1; int l = i - 1, r = i + 1; while(l >= 1 && r <= n && a[l] == a[r]) { l--; r++; cur += 2; } if(cur > ans) { ans = cur; ansl = ++l; ansr = --r; } } |
18.06.2014, 01:24 | #7 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
i++ называется постинкрементом. Например:
Код:
В данном случае переписывайте в обычный цикл for..to..do. a[l] == a[r] - это оператор равенства (в паскале просто "="). l--;r++;cur += 2; - расписываются похоже: l := l - 1; r := r + 1; cur := cur + 2;. Или можно воспользоваться процедурами inc и dec. ansl = ++l; -> l := l + 1; ansl := l;, хотя в данном случае значение l уже неважно, так что можно ansl := l + 1;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 18.06.2014 в 01:26. |
20.06.2014, 17:34 | #8 | |
Форумчанин
Регистрация: 21.05.2014
Сообщений: 121
|
Цитата:
|
|
20.06.2014, 17:36 | #9 |
Пользователь
Регистрация: 15.04.2012
Сообщений: 46
|
покажи весь код
НИУ СГУ им. Чернышевского
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Алгоритм поиска палиндрома | Mr. Boogie man | Общие вопросы C/C++ | 1 | 07.01.2012 16:36 |
Определение палиндрома без массивов | Negent | Общие вопросы C/C++ | 7 | 09.12.2011 17:46 |
проверка палиндрома | ArniLand | Общие вопросы C/C++ | 4 | 27.12.2010 14:46 |
Паскаль.Определение числа палиндрома | uropb992 | Помощь студентам | 6 | 09.06.2010 04:58 |
Разобраться с кодом - поиск палиндрома | mamant1 | Помощь студентам | 0 | 09.12.2009 20:06 |