Поиск:

Ответ в темуСоздание новой темы Создание опроса
> максимальное количество шагов конем 
:(
    Опции темы
en-horror
Дата 5.10.2004, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 13.7.2004

Репутация: нет
Всего: нет



народ вот мне задали задание высчитать максимальное количество ходов конем на шахматной доске размерами x y. Может посоветуете каким способом это можно сделать.
PM MAIL   Вверх
Fantasist
Дата 5.10.2004, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: нет
Всего: 41



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




--------------------
Волны гасят ветер...
PM MAIL   Вверх
en-horror
Дата 5.10.2004, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 13.7.2004

Репутация: нет
Всего: нет



Мда это идейка!!! Надо попробовать wink.gif
PM MAIL   Вверх
S.A.P.
Дата 5.10.2004, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: нет
Всего: 71



Есть метод проще, он работает с ограниченным количеством клеток (максимум 64x64 где то так smile.gif ). Просто всегда выбираешь следующий ход, от которого есть наименьшее количество вариантов последующих ходов.


Вроде понятно объяснил hmmm.gif .

Это сообщение отредактировал(а) Perchilla - 5.10.2004, 22:06
PM MAIL   Вверх
en-horror
Дата 5.10.2004, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 13.7.2004

Репутация: нет
Всего: нет



hehe.gif
PM MAIL   Вверх
Alex101
Дата 8.10.2004, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 891
Регистрация: 8.4.2002
Где: Москва

Репутация: 1
Всего: 10



Цитата(Perchilla @ 5.10.2004, 19:05)
Есть метод проще, он работает с ограниченным количеством клеток (максимум 64x64 где то так smile.gif ). Просто всегда выбираешь следующий ход, от которого есть наименьшее количество вариантов последующих ходов.


Вроде понятно объяснил hmmm.gif .

Не всегда, просто сначала пытаешься пойти в такую клетку.
Эта задача решается только полным перебором. Волновой алгоритм здесь не прокатит. Расставили мы единицы, а дальше? Надо хранить все варианты где-то. Все придет к тому же перебору, но еще париться с хранением...
Проще рекурсия. Пусть доска D[N][N], Стоимость хранить в C[N][N].
Тогда порядок действий такой:
Заполним матрицу C (сколько вариантов хода можно выбрать из каждой клетки). D заполнили нулями.
Выбираем клетку D[i][j], где С[i][j]=min, D[i][j]=1, в матрице C изменили стоимость клеток (в клетку D[i][j] уже хода нет)

1. Выберем все варианты хода из D[i][j], расположим их в порядке возрастания стоимости
Если ходов нет и D[i][j]=N*N то задача решена (или запоминаем max значение)
Иначе
Если ходы есть {
Перебираем все варианты (по возрастанию стоимости) {
Выбрали очередной ход в (i1,j1)
Уменьшили стоимости в C
Перешли к 1.
}

Вот примерно так, думаю, идея понятна


--------------------
С уважением, А. Фролов.
PM MAIL ICQ   Вверх
LSD
Дата 8.10.2004, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: нет
Всего: 538



Для проверки можете использовать следующий факт: стандартную шахматную доску можно полностью обойти конем, не заходя в клетку дважды. И такой способ не один.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Akina
Дата 8.10.2004, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Существует строгое доказательство того, что прямоугольную доску M*N (M>3, N>3) можно всю обойти конем, побывав в каждой клетке по разу.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
III.nfo
Дата 22.10.2004, 07:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 18.10.2004

Репутация: 2
Всего: 2



А так:
12333321
23444432
34555543
34555543
34555543
34555543
23444432
12333321

точка - n ходов - n точек - n ходов итог
1 - 2 - 1*4= 4 - 2* 4= 8
2 - 3 - 2*4= 8 - 3* 8= 24
3 - 4 - 5*4=20 - 4*20= 80
4 - 6 - 4*4=16 - 6*16= 96
5 - 8 - 4*4=16 - 8*16=128
-------------------------------------------------
Итог 64 - 336

PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0687 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.