![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 14.04.2009
Сообщений: 12
|
![]()
Такая задача: на пустую шахматную доску в любую клетку ставится ферзь. Затем указывается любая другая клетка. Нужно найти и показать минимальный путь, который должен проделать ферзь из начального положения в эту точку.
Подскажите пожалуйста хотя бы возможные принципы решения. |
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Хм. Допустим так: Есть координаты ферзя Fx,Fy и клетки Ах Ау
Тогда Если Ax=Fx or Ay=Fy - то путь по прямой abs(Ax-Fx)=0 AND abs(Ay-Fy) - то путь по диагонали Иначе скажем abs(Ax-Fx)+abs(Ay-Fy) Вроде такого было в колледже...
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 12.02.2007
Сообщений: 360
|
![]()
что самое забавное - "Иначе скажем abs(Ax-Fx)+abs(Ay-Fy)
" нафиг не надо... Как я представляю - ферзь на любое поле может попасть либо за 0 (частный случай), либо за 1 - по диагонали либо вертикали\горизонтали либо за 2. То есть это условие не нужно - если не (Ax=Fx or Ay=Fy) and не abs(Ax-Fx)=0 AND abs(Ay-Fy) - значит за два хода минимум |
![]() |
![]() |
![]() |
#4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Или нет, а, Автор?
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
я согласен с мнением Stilet: путь — это именно количество клеточек, которые должен "прошагать" Ферзь...
а конкретно по движению: 1) я, например, не допонял: поясните формулу движения по диагонали. 2) имхо, краткий путь не является abs(Ax-Fx)+abs(Ay-Fy) (см. рисунок) Последний раз редактировалось Serge_Bliznykov; 09.06.2009 в 14:09. |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 14.04.2009
Сообщений: 12
|
![]()
Нужны и минимальный путь (количество клеток) и число ходов. С количеством ходов я сам смогу разобраться. Вот примерно мои мысли:1)Если нет совпадений по строкам\столбцам и диагоналям, то 2) определить, что ближе к ферзю: строка или столбец точки. 3)Диагональным ходом добраться до строки\столбца точки 4) Добраться до точки прямым ходом.
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
Alexeytur, полностью согласен с Вашим алгоритмом!!
|
![]() |
![]() |
![]() |
#8 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Но только тут одна трабла - Шахматные правила не позволят ферзю ходить дважды не пропустив хода противника ![]()
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 14.04.2009
Сообщений: 12
|
![]()
Спасибо всем за ответы, программа вроде работает!
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ход конем | Etlau | Помощь студентам | 3 | 28.05.2010 19:16 |
Ход ферзём, ищем баги | Sasha_Smirnov | Общие вопросы C/C++ | 0 | 13.05.2009 03:26 |
помогите придумать ход решения | Petruha-nsk | Общие вопросы C/C++ | 6 | 13.04.2009 18:31 |
За один ход можна вычеркнуть одно число и на его место записать строго меньше неотрицательное число. | Witaliy | Помощь студентам | 5 | 25.02.2009 17:44 |
при открытии большого файла должно появляться окно с ProgressBar и показывать ход открытия | Михаил Юрьевич | Общие вопросы Delphi | 3 | 28.05.2008 23:33 |