|
3 / 3 / 5
Регистрация: 05.03.2011
Сообщений: 270
|
|
Расстановка ферзей01.10.2011, 07:23. Показов 5934. Ответов 1
Метки нет (Все метки)
Добрый День!!!
Помогите Пожалуйста придумать код к следующей задаче:Найдите такую расстановку пяти ферзей на шахматной доске, при которой каждое поле будет находиться под ударом одного из них. Нужен "алгоритм с возвратом" с использованием рекурсивных процедур
0
|
|
| 01.10.2011, 07:23 | |
|
Ответы с готовыми решениями:
1
о расстановке ферзей расстановка знаков арифметических операций. Расстановка скобочек в выражении (все комбинации) |
|
Level 2
|
|
| 03.10.2011, 00:02 | |
|
http://ru.wikipedia.org/wiki/%... 0%E7%FF%F5
Добавлено через 4 минуты Задача о восьми ферзях
Алгоритм решения достаточно простой поиск с возвратом.
Алгоритм строится на следующем несложном заключении: поскольку доска 8х8 и нам надо расположить на ней 8 ферзей, то из этого следует, что в каждом столбце доски будет точно один ферзь. Остаётся только выбрать правильную позицию ферзя в столбце. Для этого мы просматриваем все столбцы слева направо, начиная с первого столбца (самого левого). Поскольку наша доска пуста, то расположить на ней ферзя (в первом столбце) очень просто: достаточно поставить его на любое место. Для определённости, мы будем предполагать, что просмотр столбца с целью поиска полей, которые не находятся "под боем", начинается с самой верхней строки и идёт вниз. Таким образом, просматривая первый столбец сверху вниз, мы находим первое поле, которое не бьётся другими ферзями. Для первого столбца это будет поле (1,1) - левый верхний угол доски (в шахматах - это поле А8). Итак, первый ферзь поставлен. Переходим ко второму столбцу, в котором надо подобрать позицию для второго ферзя. Поступаем точно также: просматриваем поля второго столбца сверху вниз - ищем поле, которое не бьётся уже поставленными ферзями. Как только такое поле найдётся - ставим на него ферзя. Аналогично с третьим, четвёртым и пятым ферзями: С шестым и седьмым ферзями проблем тоже не возникает. Создаётся иллюзия, что задача сейчас будет решена... Но посмотрите на доску - в последний столбец невозможно поставить ферзя! Все поля восьмого столбца находятся под боем! Что же делать? Давайте подумаем из-за чего сложилась такая ситуация? Правильно, из-за неправильной расстановки предыдущих ферзей, ведь именно их расположение блокирует последний столбец целиком. Следовательно, надо изменить расположение уже установленных фигур. Возвращаемся на шаг назад к седьмому ферзю. Попробуем изменить его позицию. Как мы уже знаем - в одном столбце находится один ферзь, поэтому двигать его по горизонтали мы не будем. Остаётся попытаться сдвинуть его по вертикали. Очевидно, что двигать ферзя вверх смысла никакого нет, так как там мы уже проверили все поля и они все под боем. Поэтому выход один - сдвигаем седьмого ферзя вниз. Однако не всё так просто: все поля ниже текущей позиции находятся под боем! Поля выше - тоже! А текущая позиция нас не устраивает, т.к. в совокупности с положением других ферзей, блокирует решение задачи. Убираем седьмой ферзь с доски и возвращаемся к шестому ферзю. Пытаемся скорректировать его позицию, двигая его вниз. Как видно на рисунке, это ничего не даст: все поля ниже находятся под боем. Убираем шестого ферзя с доски и возвращается к пятому. Корректируем его позицию. В данном случае в пятом столбце есть поле, ниже текущего, которое не под боем. Перемещаем туда пятого ферзя. Поскольку пятый ферзь установлен - переходим к следующему столбцу (опять движемся вперёд). Впрочем, при таком положении первых пяти ферзей, шестой ферзь установить нельзя. Нам придётся опять вернуться к пятому, затем к четвертому и так далее. В конце концов, двигаясь по столбцам вперёд (слева направо) и возвращаясь назад (справа налево) при неудаче, мы получим решение, приведённое в секции "Результаты" в конце этой статьи.
3
|
|
| 03.10.2011, 00:02 | |
|
Помогаю со студенческими работами здесь
2
Расставить в клетках K ферзей так, чтобы они друг друга не били Расстановка 8 ферзей Расстановка ферзей Расстановка восьми ферзей
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|