Россия, Москва, МИЭМ |
Задачи, сгруппированные по методам решения. Метод вложенных матриц
Задача 4: Заполните матрицу, как показано на рис.9.5:
Дополнительные сведения: Есть в информатике классическая задача "Магический квадрат" (в "Магическом квадрате" сумма элементов всех строк, всех столбцов и всех диагоналей равна). Решать ее можно различными способами, один из которых называется методом "Террас". Для создания Магического квадрата размерностью n x n (n - нечетное число) необходимо заполнить двумерный массив размерностью (2n-1)x(2n-1) так, как в на рис.9.6:
Затем "треугольники", выступающие за пределы жирной рамки перенести внутрь таким образом (табл.9.3):
В полученном двумерном массиве сумма элементов всех строк и всех столбцов равна.
Идея решения: Разбиваем исходную матрицу на "вложенные". В каждой матрице заполняем побочную диагональ:
Решение очевидно.
Ключевые термины
- Магический квадрат - двумерный массив, сумма элементов каждой строки, каждого столбца и каждой диагонали которого одинакова.
- Метод "Террас" - способ создания магического квадрата
- Решето Эратосфена - алгоритм нахождения простых чисел.
- Скатерть Улама - узор из простых чисел, расположенных по спирали.
Краткие итоги
При заполнении некоторых двумерных массивов проглядывается некоторая закономерность (способ заполнения повторяется). Мысленно "разберем" двумерный массив на "вложенные" - как бы независимые друг от друга массивы, для заполнения которых используется один и тот же способ. Разрабатываем для каждого из них алгоритм заполнения, затем находим зависимость, объединяющую все алгоритмы в один.
Данный способ поможет решить такие задачи, как создание Магического квадрата методом "Террас", создание "Скатерти Улама" при помощи "Решета Эратосфена".
Набор для практики
Вопросы.
- Каким образом можно заполнить двумерный массив числами натурального ряда чисел?
- Каков порядок обхода элементов двумерного массива, если счетчик внешнего цикла используется в качестве первого индекса элемента массива, счетчик внутреннего цикла - в качестве второго индекса?
- Каков порядок обхода элементов двумерного массива, если счетчик внешнего цикла используется в качестве второго индекса элемента массива, счетчик внутреннего цикла - в качестве первого индекса?
Упражнения.