1. Главная
  2. Библиотека
  3. Теория вероятностей
  4. Дана квадратная шахматная доска размером N x N. На доск...
Разбор задачи

Дана квадратная шахматная доска размером N x N. На доске уже размещено K фигур. Фигуры размещены так, что находятся не под боем друг друга. Необходимо расставить на доске еще L фигур так, чтобы никакая из фигур на доске не находилась под боем любой другой

  • Предмет: Теория вероятностей
  • Автор: Кэмп
  • #Дискретная математика
  • #Теория графов
Дана квадратная шахматная доска размером N x N. На доске уже размещено K фигур. Фигуры размещены так, что находятся не под боем друг друга. Необходимо расставить на доске еще L фигур так, чтобы никакая из фигур на доске не находилась под боем любой другой

Условие:

Дана квадратная шахматная доска размером N x N. На доске уже размещено K фигур. Фигуры размещены так, что находятся не под боем друг друга.
Необходимо расставить на доске еще L фигур так, чтобы никакая из фигур на доске не находилась под боем любой другой фигуры. Необходимо найти все возможные решения.

Входные данные: файл input.txt. На первой строке файла записаны три числа: N L K (через пробел). Далее следует K строк, содержащих числа x и y (через пробел) - координаты уже стоящей на доске фигуры. Координаты отсчитываются от 0 до N-1. 1 <= N <= 24.

Выходные данные: файл output.txt. На каждое найденное решение необходимо записать в файл одну строку. Строка состоит из пар (x,y) - координаты фигур на доске. В решение следует вывести координаты всех фигур, находящихся на доске. Каждую фигуру необходимо записать в виде пары координат, разделенных запятой и обрамленных скобками. Координаты отсчитываются от 0 до N-1. Порядок, в котором фигуры перечислены в решении, не имеет значения. Порядок перечисления решений не имеет значения. Выводимые решения не должны содержать повторы, т.е. каждое найденное решение необходимо вывести только один раз.
Если не было найдено ни одного решения, в файл необходимо записать no solutions.

Решение:

Для решения данной задачи мы можем использовать метод backtracking (обратный поиск), чтобы расставить королей на шахматной доске так, чтобы они не угрожали друг другу. Король угрожает всем клеткам, которые находятся на расстоянии одной клетки от него, включая диагонали.

Вот пример кода на языке C, который решает эту задачу:

Внутри — полный разбор, аргументация, алгоритм решения, частые ошибки и как отвечать на каверзные вопросы препода, если спросит

Попробуй решить по шагам

Попробуй один шаг и продолжи в режиме обучения или посмотри готовое решение

Какой алгоритмический подход наиболее подходит для решения задачи расстановки L фигур на шахматной доске N x N, учитывая K уже расставленных фигур, так чтобы ни одна фигура не находилась под боем другой, и необходимо найти все возможные решения?

Что нужно знать по теме:

Что нужно знать по теме

Алгоритм решения

Топ 3 ошибок

Что спросит препод

Выбери предмет