Эксперт GPSS
552 / 411 / 105
Регистрация: 02.07.2010
Сообщений: 1,721
1

Удары ферзем по фигурам!!!

15.10.2010, 20:28. Показов 2211. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую всех форумчан!!!!
Дана задача:
Найти возможные способы для удара ферзем максимального количества вражеских фигур за N проходов исходя из определенного задаваемого положения вражеских фигур, не изменяющих своего положения. Определить кратчайшие.
Подскажите кто может с чего начинать алгоритм выполнения и может ссылочки какие есть с готовыми кодами?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.10.2010, 20:28
Ответы с готовыми решениями:

Реакция на удары Unity3d
HitReaction, Hit Reaction Manager Добрый день. Друзья для себя хочу научиться делать игры. И...

FreeKick: бьём штрафные удары
Нашел футбольную игру . Это она для любителей бить штрафные удары. http://go-o-ol.ru/ Может кто...

Pygame, событие в движении, удары и стенки
Здравствуйте, помогите с решением данных проблем 1) есть игрок при нажатии левой кнопки мыши,...

Удары током и дребезжащий звук в наушниках
Здравствуйте! Возникла следующая проблема. Никогда раньше такого не было. Ноутбук HP Envy...

15
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
15.10.2010, 21:41 2
Напомнило "задачу комивояжора", посмотри может поможет.
0
Эксперт С++
261 / 191 / 10
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
15.10.2010, 21:51 3
Рекурсия, где в каждом вызове проверяются все возможные ходы (в т.ч. взятия) ферзём.
При каждом взятии увеличивается счётчик.
Оптимизация: при проверке хода если оставшихся ходов меньше, чем разница с лучшим результатом - пропускаем проверку.
Можно так же запоминать ситуации, что бы не просчитывать по несколько раз, ведь к некоему положению фигур часто можно прийти несколькими способами.
0
Эксперт GPSS
552 / 411 / 105
Регистрация: 02.07.2010
Сообщений: 1,721
19.10.2010, 20:03  [ТС] 4
А хотябы фрагменты кода какие нибудь можете написать? чтобы приблизительно стало ясно
0
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
19.10.2010, 20:19 5
Цитата Сообщение от SergProgC++ Посмотреть сообщение
А хотябы фрагменты кода какие нибудь можете написать? чтобы приблизительно стало ясно
Какие фрагменты кода? Вы алгоритм хоть бы выбрали, он вродь как не совсем тривиальный.
0
Эксперт GPSS
552 / 411 / 105
Регистрация: 02.07.2010
Сообщений: 1,721
21.10.2010, 19:54  [ТС] 6
Цитата Сообщение от KuKu Посмотреть сообщение
Какие фрагменты кода? Вы алгоритм хоть бы выбрали, он вродь как не совсем тривиальный.
подскажи какой алгоритм тут надо использовать
0
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
21.10.2010, 21:01 7
вродь сказал посмотри "задачу комвояжора" - схожая задача, для решения которой есть несколько алгоритмов, или как Andrew_Lvov сказал перебором.
0
Эксперт GPSS
552 / 411 / 105
Регистрация: 02.07.2010
Сообщений: 1,721
25.10.2010, 22:29  [ТС] 8
было бы не плохо еслиб код кто выложил или часть кода с чего начать можно
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
25.10.2010, 22:51 9
Предварительно (я не полностью уверен, но вроде бы правильно будет), алгоритм будет заключаться в следующем:
- если есть на линии удара вражеская фигура (или несколько фигур на разных линиях), то нужно бить любую из них.
- если нет на линии (линиях) удара никаких фигур, то кратчайшим путем (за два хода) бьем любую из находящихся на поле, и смотрим на пункт первый.
0
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
25.10.2010, 23:14 10
Любую бить нельзя. Синий - ферзь, красные - кого рубят, на рисунке. К примеру только один вариант рубки в 4 хода, если атакавать сразу верх. Если по диагонали вначале, тот надо больше ходов.
Миниатюры
Удары ферзем по фигурам!!!  
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
25.10.2010, 23:24 11
KuKu, согласен. А как картинку вставить в ответе?
0
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
25.10.2010, 23:24 12
в расширенном режиме, нажать скрепку.
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
25.10.2010, 23:43 13
в расширенном режиме, нажать скрепку.
В расширенный режим что бы перейти, нужно нажать значек А/А?
0
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
25.10.2010, 23:57 14
вот так
Миниатюры
Удары ферзем по фигурам!!!   Удары ферзем по фигурам!!!  
0
84 / 57 / 8
Регистрация: 07.08.2010
Сообщений: 185
26.10.2010, 08:31 15
Цитата Сообщение от KuKu Посмотреть сообщение
Любую бить нельзя. Синий - ферзь, красные - кого рубят, на рисунке. К примеру только один вариант рубки в 4 хода, если атакавать сразу верх. Если по диагонали вначале, тот надо больше ходов.
Для начала надо постоить взвешенный граф всех передвижений ферзя от одной фигуры к другой. Вершины графа - это поля на шахматной доске, где находятся фигуры или сам ферзь. Вес ребра в графе будет равен количеству шагов, которое ферзь должен сделать от поля одной вершины к другой. Сделаем это для твоего рисунка. Но сначала определим координаты фигур (в шахматной нотации):

ферзь: c2
фигуры: c5, c8, f3, f5

Вершины в нашем графе будут такие: c2, c5, c8, f3, f5.
Ребра:
c2-c5, вес=1
c2-c8, 1
c2-f3, 2 (нужно два шага)
c2-f5, 1
c5-c8, 1
c5-f3, 2
c5-f5, 1
c8-f3, 2
c8-f5, 1
f3-f5, 1

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

Но есть еще одна тонкость. Иногда таким образом будут находится неверные пути, т.е. ферзь с с2 на с8, перескакивая через с5. Поэтому в конце программы нужно проверять пути и отбрасывать неверные.
0
Эксперт GPSS
552 / 411 / 105
Регистрация: 02.07.2010
Сообщений: 1,721
02.11.2010, 20:38  [ТС] 16
А пример кода или пошаговый алгоритм ко всему этому есть?
0
02.11.2010, 20:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2010, 20:38
Помогаю со студенческими работами здесь

Привязать код к фигурам
Доброго времени суток. Необходимо создать программу, которая будет сортировать по возрастанию...

Шахматы, ход ферзем
Здраствуйте! Подскажите пожалуйста как запрограммировать ходы ферзя на шахматной доске? Он должен...

Как задать номера фигурам?
Помогите пож-ста разобраться в такой задаче: на Image1 ставятся фигуры-точки, например их 2. как им...

Вычислить все возможные ходы ферзём
вычислить все возможные ходы ферзём


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru