|
6 / 6 / 1
Регистрация: 15.03.2009
Сообщений: 83
|
||
Определить все ходы для белой шашки.02.10.2009, 19:58. Показов 13863. Ответов 8
Метки нет (Все метки)
0
|
||
| 02.10.2009, 19:58 | |
|
Ответы с готовыми решениями:
8
Определить все возможные ходы для следующих фигур
Определить все возможные ходы ферзя, с поворотом доски на 180 градусов |
|
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
| 02.10.2009, 23:08 | |
|
Наверное если срубил черную шашку, то дальше можн рекурсивно вызвать туже процедуру чтобы она проверила - нельзя ли срубить еще одну шашку.
1
|
|
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
|
| 03.10.2009, 10:41 | |
|
Ну, слушай, такое дело раз.
Во-первых, создай матрицу 8x8 и как-то сыммитируй на ней шашки. Заполни то есть. Вручную, ещё как-то. Допустим, если элемент равен 1, это чёрная шашка, если 2, то белая, если 0- никакая. И заполняяй по шашечным правилам. Это уж ты сам думай как. В программме будет две функции 1) основная (рекурсивная) osn 2) вспомогательная vsp Вот схема osn { vsp () osn } Всомогательная функция будет показывать, куда шашке можно ходить (условимся, что она не дамка) То есть каждая шашка может потенциально сделать 8 ходов pramo_napravo_mal; pramo_napravo_bol; //Это когда перепрыгивает pramo_nalevo_mal; pramo_nalevo_boll; nazad_napravo_mal; nazad_napravo_bol; nazad_nalevo_mal; nazad_nalevo_boll; Теперь смотри. Если одна из этих величин равна 1, то шашка может туда ходить, если равна 0, то не может. То, естть, к примеру, получаешь такие значения pramo_napravo_mal==0; pramo_napravo_bol==1; //Это когда перепрыгивает pramo_nalevo_mal==0; pramo_nalevo_boll==0; nazad_napravo_mal==1; nazad_napravo_bol==0; nazad_nalevo_mal==0; nazad_nalevo_boll==1; ...Как узнать, куда шашка может сходить, а куда нет? Для этого существует vsp В неё передаются указатели на эти переменные и координаты шашки. Вот, собственно, и начинаются мытраства. В функции vsp, принимающей указатели на эти переменные ты должен определить каждое из 8-ми значений, учитывая 1)координаты шашки 2)координаты других шашек (массив-то глобальный и виден отовсюду) Это ты уж сам сиди и думай, как всё сделать Схема будет так выглядеть с учётом вышесказанного: osn { bool pramo_napravo_mal==0; bool pramo_napravo_bol==1; //Это когда перепрыгивает bool pramo_nalevo_mal==0; bool pramo_nalevo_boll==0; bool nazad_napravo_mal==1; bool nazad_napravo_bol==0; bool nazad_nalevo_mal==0; bool nazad_nalevo_boll==1; vsp (&pramo_napravo_mal //+ адреса всех этих переменных + координаты шашки) osn () } Ну, и, наконец, по вызову osn Вызываешь так if (pramo_napravo_mal) { osn () } if (pramo_napravo_bol) { osn () } ...И так далее, до конца. 8 вызовов должно быть В функцию osn передаются координаты шашки, куда можно сходить. То есть если у тебя текущие параметры (0, 1), и, допустим nazad_napravo_mal==1, то пишешь if (nazad_napravo_mal) { osn (2, 3) } ...Ну вот так и прыгаешь, пока все параметры не станут равны 0. Введи переменную какую-нибудь пусть ходы подсчитывет. Учитывай всё. ...Да. Самый первый вызов функции osn такой: osn (координаты шашки) Спрашивай, что непонятно!
1
|
|
|
6 / 6 / 1
Регистрация: 15.03.2009
Сообщений: 83
|
|
| 04.10.2009, 15:57 [ТС] | |
|
Что-то плохо понятно.Я сделал поле 8х8,сделал ввод координат шашек и сделал определение возможного хода(право лево,с учетом занятых клеток),но все без рекурсии и не могу пока сделать функцию(рекурсивную)
0
|
|
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
|
| 04.10.2009, 17:30 | |
|
Бум учиться.
Давай сюда код с комментариями и внятно говори, в чём трудности.
0
|
|
|
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
|
|
| 05.10.2009, 02:35 | |
|
Хакер, Все просто.Опиши функцию для одного хода,после чего добавь вызов ее для себя же в случае,если этот ход кого-то захавал.При этом,перед вызовом "убирай "съеденную шашку,ходящую шашку "перемещай"а после вызова возвращай съеденную и переместившуюся на изначальные позиции.
Получится,что рекурсия как бы раскатает какой-то вариант,каждый раз закатывая его обратно после того,как он рассмотрен,возвращаясь к исходной позиции и проверяя другие возможные ходы из текущей глубины перебора.
1
|
|
|
0 / 0 / 0
Регистрация: 01.06.2010
Сообщений: 3
|
|
| 01.06.2010, 23:30 | |
|
Хакер, а не осталось работающей программы? был бы очень признателен...
0
|
|
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||||
| 03.06.2010, 15:42 | ||||||
0
|
||||||
|
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 3
|
|
| 27.02.2017, 17:50 | |
|
Mr.X, попыталась запустить, а там пишет: Runtime Error
Не подскажете ,как исправить?
0
|
|
| 27.02.2017, 17:50 | |
|
Помогаю со студенческими работами здесь
9
Вывести все возможные ходы коня
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|