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

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

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

> Китайская головоломка., рекурсивная работа с матрицей.
madrabbit
сообщение 7.03.2005 22:54
Сообщение #1


Новичок
*

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

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


Всем привет!
......o o o.....
......o o o.....
o o o o o o o
o o o .. o o o
o o o o o o o
......o o o.....
......o o o.....

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


вот тут мы уже разобрались с рекурсией подобного типа. Еще раз спасибо всем, кто помог.
Теперь треба идеи по поводу реализации данной задачки а именно сам алгоритм.
Спасибо.
:yessss: ну я погнал на шмиру...

"Неприличными словами не выражаться!" (С) Шариков lol.gif
Перевожу: "Шмира" - Охрана

Volvo

Сообщение отредактировано: madrabbit - 9.03.2005 17:50
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
hiv
сообщение 11.03.2005 15:48
Сообщение #2


Профи
****

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

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


Я опишу действия самой рекурсивной ф-ции:
1. Пробегаем по всем шашечкам
2. Проверяем может ли шашечка ходит вниз, если да, то ходим и запускаем рекурсивно нашу ф-цию с новой позицией, если нет, то идем дальше.
3. Проверяем может ли шашечка ходит вверх, если да, то ходим и запускаем рекурсивно нашу ф-цию с новой позицией, если нет, то идем дальше.
4. Проверяем может ли шашечка ходит влево, если да, то ходим и запускаем рекурсивно нашу ф-цию с новой позицией, если нет, то идем дальше.
5. Проверяем может ли шашечка ходит вправо, если да, то ходим и запускаем рекурсивно нашу ф-цию с новой позицией, если нет, то идем дальше.
6. Когда пробежали все шашечки и ни один из рекурсивных вызовов ф-ции не дал положительного ответа TRUE, то проверяем может всего-то одна шашечка осталась? Если это так, то решение найдено и возвращаем true. Тогда все рекурсивные вызовы начинают завершаться и освобождать память.

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


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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