Шаг 204.
Рекурсия на Python.
Множественная рекурсия III: перебор с возвратами. Примеры задач

    На этом шаге мы рассмотрим несколько заданий и приведем их решения.

    Приведем несколько примеров решения задач.

    Задание 1. Реализуйте алгоритм перебора с возвратами, который выводит все решения задачи n ладей. Он похож на задачу n ферзей, но вместо ферзей используются ладьи. Поскольку ладьи могут ходить только по вертикали и горизонтали, в каждой строке и каждом столбце может находиться только одна ладья. При этом на одной диагонали может стоять несколько ладей. На рисунке 1 приведено одно из решений задачи.


Рис.1. Одно из решений задачи четырёх ладей

Раскрыть/скрыть решение и комментарии.

    Задание 2. Магический квадрат - это сетка размером n*n, заполненная первыми n2 положительными целыми числами так, что суммы чисел в каждой строке, столбце и диагонали одинаковы. Эта сумма называется "магической константой" и равна n(n2 + 1)/2 для любого n. На рисунке 2 приведён пример магического квадрата размера 3*3 с магической константой 15.


Рис.2. Магический квадрат 3*3

    Разработайте алгоритм перебора с возвратами, который выводит все возможные магические квадраты размера 3*3. Примечание: разрабатывать алгоритм решения этой задачи для любого n не нужно. С какой проблемой можно столкнуться при решении этой задачи для бОльших значений n?

Раскрыть/скрыть решение и комментарии.

   

    На этом мы заканчиваем наше знакомство с рекурсией и областями ее применения. Надеемся, что изложенный материал был Вам интересен и полезен. Удачи в освоении премудростей программирования!




Предыдущий шаг Содержание