IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> рекурсивная работа с матрицей, задачка с шахматным конем
madrabbit
сообщение 18.12.2004 17:26
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Здравствуйте.
Помогите пожалуйста с алгоритмом. хотя бы просто на пальцах или отправьте к соответствующим ссылкам.
Интересует следующий алгоритм:

Предположим задана некоторая матрица размерности N на N( положим поле больше шахматной доски), а также
координаты двух точек(элементы массива a[i,j], b[i1,j1]),

Задача. Найти оптимальный путь межды этими точками "шахматным конем".


Решал так:
забил всю матрицу нулями, два элемента - "1".
функция проверки "не является ли элемент массива =1. Если нет, то в функцию передаются новые координаты(причем 8 различных точек, куда может шагнуть конь с текущего места). таким образом это приводит к многократному зацикливанию и росту рекурсивных вложений...

посоветуйте принцип решения.
каким способом, например, можно оборвать вложенную процедуру при приближении к краям поля. Ну и вообще... задач однотипных я знаю много.
Интересует сам принцип и средства решения.
Хотелось бы самому дойти, но видно опыта самоучки маловато...

спасибо вам заранее за помощь! :molitva:

Сообщение отредактировано: madrabbit - 18.12.2004 17:53
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
APAL
сообщение 19.12.2004 12:37
Сообщение #2


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Цитата
проблема в том, каким конкретно способом обрывать процедуру(каким оператором)

Обрывать принудительно не надо - закончить процедуру если мы попали на 2-ку или некуда ходить (т.е. все возможные варианты хода уже имеют "1").
Цитата
куда заносить последовательность ходов,в отдельный массив? для каждой последовательности свой массив определять? для меня проблематично.

Вот здесь надо подумать как реализовать хранение результатов....
Например запись в файл/файлы или в динамическую память (это быстрее), а потом только сделать поиск... а можно уже при работе искать короткий путь, т.е. увеличивать счетчик для следующей итерации - если достигнут финал (2), то проверяем предидущий результат и если он хуже - запоминаем текущий.


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
madrabbit   рекурсивная работа с матрицей   18.12.2004 17:26
Digitalator   А нафиг тут вообще рекурсия нужна? ээ вообщето она...   18.12.2004 17:55
volvo   Digitalator Еще один такой пост - накажу. Если че...   18.12.2004 17:58
madrabbit   volvo. помоги советом :rolleyes:   18.12.2004 18:01
Digitalator   Ух какие мы злые, а с чего это? Человек не говорит...   18.12.2004 18:07
madrabbit   спасибо вам ребята... :(   18.12.2004 18:37
Digitalator   Эй, чувак, не расстраивайся! Я тебе говорю - ...   18.12.2004 18:43
APAL   но можно... Если на пальцах: 1. Для начальной п...   18.12.2004 18:54
Digitalator   имхо с рекурсией все усложняеться и больше места д...   18.12.2004 19:06
madrabbit   спасибо. на самом деле я все так и делал. (описал...   18.12.2004 20:48
APAL   Обрывать принудительно не надо - закончить процед...   19.12.2004 12:37
APAL   Для начала было бы неплохо ввести еще одно значени...   29.01.2005 15:02
madrabbit   ВОПРОС! не пойму почему не получается. 8( врод...   29.01.2005 15:11
volvo   Тогда попробуй генерировать динамическую матрицу ...   17.02.2005 15:38
madrabbit   так я так и делаю, каждый раз в рекурсию переда...   18.02.2005 1:16
volvo   Ну так вот что я нашел: procedure recurse(va...   18.02.2005 1:29
madrabbit   спасибо. я приблизительно это и имел ввиду. А име...   18.02.2005 18:50
volvo   Type matrix = array[1 .. 100] of integer...   18.02.2005 18:58
madrabbit   Огромное спасибо, ну наконец-то я понял! Тепер...   19.02.2005 14:08
volvo   Посмотри вот это... FAQ: Динамические массивы FA...   19.02.2005 14:23


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 12:46
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"