Эксперт GPSS
552 / 411 / 105
Регистрация: 02.07.2010
Сообщений: 1,721
|
|
1 | |
Удары ферзем по фигурам!!!15.10.2010, 20:28. Показов 2211. Ответов 15
Метки нет (Все метки)
Приветствую всех форумчан!!!!
Дана задача: Найти возможные способы для удара ферзем максимального количества вражеских фигур за N проходов исходя из определенного задаваемого положения вражеских фигур, не изменяющих своего положения. Определить кратчайшие. Подскажите кто может с чего начинать алгоритм выполнения и может ссылочки какие есть с готовыми кодами?
0
|
15.10.2010, 20:28 | |
Ответы с готовыми решениями:
15
Реакция на удары Unity3d FreeKick: бьём штрафные удары Pygame, событие в движении, удары и стенки Удары током и дребезжащий звук в наушниках |
15.10.2010, 21:51 | 3 |
Рекурсия, где в каждом вызове проверяются все возможные ходы (в т.ч. взятия) ферзём.
При каждом взятии увеличивается счётчик. Оптимизация: при проверке хода если оставшихся ходов меньше, чем разница с лучшим результатом - пропускаем проверку. Можно так же запоминать ситуации, что бы не просчитывать по несколько раз, ведь к некоему положению фигур часто можно прийти несколькими способами.
0
|
Эксперт GPSS
552 / 411 / 105
Регистрация: 02.07.2010
Сообщений: 1,721
|
|
19.10.2010, 20:03 [ТС] | 4 |
А хотябы фрагменты кода какие нибудь можете написать? чтобы приблизительно стало ясно
0
|
Эксперт GPSS
552 / 411 / 105
Регистрация: 02.07.2010
Сообщений: 1,721
|
|
21.10.2010, 19:54 [ТС] | 6 |
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
|
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|
25.10.2010, 23:24 | 11 |
KuKu, согласен. А как картинку вставить в ответе?
0
|
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|
25.10.2010, 23:43 | 13 |
0
|
84 / 57 / 8
Регистрация: 07.08.2010
Сообщений: 185
|
|
26.10.2010, 08:31 | 15 |
Для начала надо постоить взвешенный граф всех передвижений ферзя от одной фигуры к другой. Вершины графа - это поля на шахматной доске, где находятся фигуры или сам ферзь. Вес ребра в графе будет равен количеству шагов, которое ферзь должен сделать от поля одной вершины к другой. Сделаем это для твоего рисунка. Но сначала определим координаты фигур (в шахматной нотации):
ферзь: 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 | |
02.11.2010, 20:38 | |
Помогаю со студенческими работами здесь
16
Привязать код к фигурам Шахматы, ход ферзем Как задать номера фигурам? Вычислить все возможные ходы ферзём Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |