Задачи на палиндромы, палиндромы!Помогите пожалуста срочно! |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Задачи на палиндромы, палиндромы!Помогите пожалуста срочно! |
Snake08 |
Сообщение
#1
|
Группа: Пользователи Сообщений: 2 Пол: Мужской Реальное имя: Николай Репутация: 0 |
Палиндромы 1!
Задана строка, которая составляется из малых латинских букв. Разрешается удалять из строки определенные буквы. Сколькими разными образами можно при этом получить палиндром? Входные данные: заданная строка находится в файле palindrome1.dat, длина его не превышает 30 символов Исходные данные: в первую строку файла palindrome1.sol надо вывести искомое количество образов получения палиндрому Пример входных и исходных данных: palindrome1.dat aab palindrome1.sol 4 Объяснение: палиндром можно получить, удалив символы 1) 1 і 2; 2) 1 і 3; 3) 2 і 3; 4) 3! Палиндромы 2! Задана строка, которая составляется из малых латинских букв. Нужно разбить его на минимальное возможное количество палиндромов. Входные данные: заданная строка находится в файле palindrome2.dat, длина не превышает 2000 символов Исходные данные: в первую строку файла palindrome2.sol надо вывести минимальное количество палиндромов, на которые можно разбить строку Пример входных и исходных данных: palindrome2.dat abbacbb palindrome2.sol 3 Объяснение: abbacbb = abba + c + bb |
Snake08 |
Сообщение
#2
|
Группа: Пользователи Сообщений: 2 Пол: Мужской Реальное имя: Николай Репутация: 0 |
Я в паскале ноль можете мне написать в паскале! Пожалуста я буду очень благодарен!
|
Lapp |
Сообщение
#3
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Я в паскале ноль можете мне написать в паскале! Значит ли это, что ты просишь готовую программу целиком? С начала и до конца? Боюсь, здесь ты это не получишь (разве что в "Задачах на заказ"). Как я понимаю, ты "в Паскале ноль" потому, что ты лоботряс. Напрягись, и стань в Паскале хотя бы 0.001. Начни писать программу. Или хотя бы задай конкретный вопрос по написанию. Тогда приходи - поможем обязательно. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Rian |
Сообщение
#4
|
Знаток Группа: Пользователи Сообщений: 396 Пол: Мужской Репутация: 9 |
слушайте, задумался, чтобы найти минимальное количество надо найти максимально длинную строку, исключить её из анализа и в оставшейся части дробить её на более мелкие, мелкие...
но как хранить данные об исключениях (сначала думал просто удалять, но нельзя) создать динамический массив? для всех отрывков строк? -------------------- Objective-C, Unity3d
|
Lapp |
Сообщение
#5
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
но как хранить данные об исключениях (сначала думал просто удалять, но нельзя) создать динамический массив? для всех отрывков строк? Рекурсия? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
volvo |
Сообщение
#6
|
Гость |
Цитата кажется решил Возможно, что это даже отработает на 32-битном компиляторе. В случае с Турбо-Паскалем (все-таки раздел-то для него, а не для 32-бит) вылезают как минимум 2 проблемы:1) может не хватить стека при большой длине входной последовательности (в условии указано до 2000 символов); 2) String хранит до 256 символов, но никак не 2000. Кстати, если принимать строки в качестве параметра по константной ссылке (как Const st: string), то можно значительно уменьшить использование стека. |
Rian |
Сообщение
#7
|
Знаток Группа: Пользователи Сообщений: 396 Пол: Мужской Репутация: 9 |
хм... ну тогда можно не использовать рекурсию, а сделать проще.
создадим массив [1..2000] заполним его нужными символами найдём в этой строке наибольший палендром перепишем этот отрезок нолями найдём новый непрерывный отрезок между нолями, проверим его на палендром... ну и будем заодно считать сколько штук нашли -------------------- Objective-C, Unity3d
|
Lapp |
Сообщение
#8
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
хм... ну тогда можно не использовать рекурсию, а сделать проще. Дык. Тогда можно и до Питера не использовать поезд - пешком проще! Перемудрил, ты, однако.. Реально именно рекурсия всегда проще (алгоритмически) и короче. Если, конечно, подумать сначала var Ну, что может быть проще? Если заменить первый цикл на while или хотя бы вставить в него break, то можно сэкономить 50% времени. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Rian |
Сообщение
#9
|
Знаток Группа: Пользователи Сообщений: 396 Пол: Мужской Репутация: 9 |
Если заменить первый цикл на while или хотя бы вставить в него break, то можно сэкономить 50% времени. ? странно, слушай ты тестировал свою прогу? короче вот что я намерял test='ghjaaabbbjjjioklk'; количество 9 мой вариант:память-12кб время при 1000 повторах 62 мс твой :память-12кб время при 1 повторе 8609мс тестировал Delphi7. учёл совет volvo про константы но это всё равно не выход для задачи требуется обработать 2000 символов, а при рекурсии на паскале... думаю даже при идеальной проработке нереально. к тому же строки действительно 255 символов, надо создавать массив, а это ещё больше памяти... -------------------- Objective-C, Unity3d
|
Текстовая версия | 4.05.2024 23:26 |