Для четных N
Сосредоточиться на среднем ряду матрицы. Слои в следующем примере (N=6
) обозначены x
, y
и z
для ясности.
x x x x x x
x y y y y x
x y z z y x <- For example, this row
x y z z y x
x y y y y x
x x x x x x
Поскольку вы находитесь в середине, вы пройдете через каждый слой. Фактически, вы будете «входить» в каждый слой один раз, а потом «выходить» из этого слоя. Каждый раз, когда вы входите или выходите из слоя, существует один элемент матрицы. Например, в приведенном выше примере, идущем слева направо, имеем:
x: enter layer x
y: enter layer y
z: enter layer z
z: exit layer z
y: exit layer y
x: exit layer x
Как вы можете видеть, мы прошли N
элементов в строке, и каждый слой необходимо войти и выйти, поэтому мы выводим, что есть N/2
слоев.
Для нечетных N
Если N
нечетно, рассуждения в основном те же, за исключением того, что самый внутренний слой (который является всего лишь одним элементом) «входит» и «выходит» одновременно. Количество слоев (N+1)/2
. Мы можем получить это путем временного игнорирования самого внутреннего слоя. Количество элементов в строке (игнорируя самый внутренний слой) равно N-1
, мы делим на 2, чтобы получить количество слоев (игнорируя самый внутренний слой), и добавляем 1 (для учета самого внутреннего слоя). Тогда (N-1)/2 + 1 = (N+1)/2
.