алгоритмы поиска |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
алгоритмы поиска |
*оля* |
Сообщение
#1
|
Пионер Группа: Пользователи Сообщений: 125 Пол: Женский Репутация: 1 |
если даны два списка чисел и нужно найти наибольшую одинаковую последовательность чисел, например, если дано:
1 2 3 4 5 6 1 2 6 2 3 4 то должен вывести 234 подскажите пожалуйста, каким алгоритмом тут лучше воспользоваться? |
volvo |
Сообщение
#2
|
Гость |
*оля*, а причина - тривиальна, и Андрей уже говорил о ней: обнулить kmax надо. Если б ты это сделала в программе, то при оборачивании куска программы циклом, задумалась бы, а не надо ли инициализацию переменной делать внутри цикла. А так - нет и нет ее, и ничего не приходит в голову... Все просто:
{ Вот начало твоего цикла } Добавляешь инициализацию и все работает. Теперь - почему это НЕ работало без обнуления переменной... Хотя нет. Давай, не я расскажу тебе, почему это не работало, а ты разберешься и расскажешь? Договорились? Добавлено через 7 мин. P.S. Если тебе надо удалять подпоследовательность из обоих списков - я бы вынес этот код в отдельную процедуру и вызывал бы ее дважды с разными параметрами. Так будет лучше. |
*оля* |
Сообщение
#3
|
Пионер Группа: Пользователи Сообщений: 125 Пол: Женский Репутация: 1 |
Добавляешь инициализацию и все работает. да, действительно работает!) Теперь - почему это НЕ работало без обнуления переменной... Хотя нет. Давай, не я расскажу тебе, почему это не работало, а ты разберешься и расскажешь? Договорились? , просто мы каждый раз искали наибольшую общую подстроку заново, и поэтому на входе kmax должно было ровняться 0, а до исправления ошибки оно в начале цикла ровнялось длине предыдущей подстроки. И следовательно условие k > kmax не может больше выполниться. Ну вот, наверное, так) Спасибо большое, я эту ошибку без вашей помощи не нашла бы!) |
Lapp |
Сообщение
#4
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Спасибо большое, я эту ошибку без вашей помощи не нашла бы!) А между тем, на нее было указано еще в посте №13.. Ты читаешь ответы полностью или так - по диагонали? постарайся обращать внимание на то, что говорят - сэкономишь как свое время, так и чужое..Обнаружить ошибку подобного рода на самом деле предельно просто - достаточно наконец обратить внимание на то, что пытается тебе сказать компилятор (warning'и). Считай его в некотором роде участником форума.. )) А, вообще, общее правило таково: ВСЕ переменные должны быть инициированы. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
*оля* |
Сообщение
#5
|
Пионер Группа: Пользователи Сообщений: 125 Пол: Женский Репутация: 1 |
А между тем, на нее было указано еще в посте №13.. Ты читаешь ответы полностью или так - по диагонали? 3. ВСЕ переменные перед использованием должны быть инициированы (у тебя не инициированы k и kmax). Да, вы уже говорили об этом, я все внимательно читаю. Я сделала инициализацию,но не там, где надо. Программа работала, а как появилась необходимость немного изменить задачу, то уже забыла об этом. А, вообще, общее правило таково: ВСЕ переменные должны быть инициированы. спасибо, теперь я о нем точно не забуду) постарайся обращать внимание на то, что говорят - сэкономишь как свое время, так и чужое. прошу прощения за невнимательность... |
Текстовая версия | 15.05.2024 8:09 |