一半尺寸如何给出NxN矩阵的层数?

时间:2018-05-08 22:15:10

标签: arrays algorithm matrix language-agnostic

假设尺寸为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 :(得分:1)

对于偶数N

专注于矩阵的中间一行。为清晰起见,以下示例中的图层(N=6)用xyz表示。

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

因为你处于中间位置,所以你会经历每一层。事实上,你进入&#34;进入&#34;每一层一次,&#34;退出&#34;那层后来。每次进入或退出图层时,矩阵都有一个元素。例如,在上面的例子中,从左到右我们有:

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是奇数,则推理大致相同,只是最内层(只是一个元素)是&#34;输入&#34;和#34;退出&#34;同时。图层数为(N+1)/2。我们可以通过暂时忽略最内层来推导出这个。行中的元素数量(忽略最内层)为N-1,我们除以2得到层数(忽略最内层),我们加1(以考虑最内层)。然后是(N-1)/2 + 1 = (N+1)/2