Как половина размера дает количество слоев матрицы NxN? - PullRequest
0 голосов
/ 09 мая 2018

Предположим матрицу размерности N * N
Кажется, что, чтобы выяснить слои, из которых он состоит, их число равно N / 2, но хотя я могу это проверить, каким-то образом я не могу концептуально соединить, как половина N дает этот номер слоя.
Пример:
4x4 => 4/2 = 2 слоя

x x x x  
x x x x  
x x x x 
x x x x 

слоев:

x x x x  
x     x    x  x  
x     x    x  x  
x x x x   

enter image description here

Может ли кто-нибудь помочь мне разблокировать это?

1 Ответ

0 голосов
/ 09 мая 2018

Для четных 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...