¿Cómo determinar matemáticamente la fila, la columna y el subd cuadrado de la célula en la matriz NXN donde N es un cuadrado perfecto?

cs.stackexchange https://cs.stackexchange.com/questions/126050

  •  29-09-2020
  •  | 
  •  

Pregunta

Dada una matriz de tamaño único de tamaño NXN, donde N es un cuadrado perfecto

 PIC 1

¿Cómo se puede determinar matemáticamente la fila, la columna y / o la sub-cuadrado, la celda reside en?Además, ¿existe una forma matemática de recorrer el subsistoso?

 ingrese la descripción de la imagen aquí

¿Fue útil?

Solución

Deja que las células unidimensionales sean $ c_1, c_2, \ cdots, c_ {n ^ 2} $ .

Asumir que la celda superior izquierda está en $ (1,1) $ , es decir, la primera fila y la primera columna. Supongamos que la celda superior derecha está en $ (1, n) $ , es decir, la primera fila y el $ n $ < / span> en columna. Luego, el $ i $ Celular, $ c_i $ está en $ (i / n + 1, i \% n +1) $ . AQUÍ $ i / n $ es el división entero y $ i \% n $ es la operación de Modulo en cualquier lenguaje de programación popular. Por ejemplo, permita que $ n= 9 $ . Luego, el $ 42 $ Celular, $ c_ {42} $ está en $ (42/9 + 1, 42 \% 9 + 1)= (5, 7) $ .

Supongamos que los subsquaros están alineados en el mismo orden que las células, para que tengamos subsquares $ S1, S2, \ CDOTS, SN $ . Considere cada subsija como una especie de "célula grande". Para que tengamos las siguientes coordenadas para subsquares.

ingrese la descripción de la imagen aquí

Tenga en cuenta que $ c_i $ pertenece a la $ (i / n + 1) $ -th Subsquare, es decir, Subsquare $ S (I / N + 1) $ . Por ejemplo, $ C_ {37} $ pertenece a la $ 5 $ -ths subsquare, es decir, subsquare < Span Class="Math-contenedor"> $ s5 $ . Estamos en la misma situación que antes, pero con el $ (i / n + 1) $ -th "Celda grande" y una $ \ sqrt n \ times \ sqrt n $ de" células grandes ". De manera similar, vemos que el $ (i / n + 1) $ , se encuentra en $ ((i / n +1) / \ SQRT N + 1, (i / N + 1) \% \ sqrt n + 1) $ , utilizando las coordenadas para subsquares.

Supongamos que queremos atravesar el subsquare en $ (j, k) $ (donde $ (j, k) $ está en las coordenadas para subsquaris).

  • La primera celda (la celda superior izquierda) de ese subsistaz es $ c _ {(j-1) \ sqrt n \ cdot n + (k-1) \ sqrt n +1} $
  • La primera celda de la segunda fila de ese subsuelo es $ c _ {(j-1) \ sqrt n \ cdot n + (k-1) \ sqrt n +1 + n} $
  • $ \ cdots $
  • La primera celda de la última fila de ese subsuelo es $ c _ {(j-1) \ sqrt n \ cdot n + (k-1) \ sqrt n + 1 + (\ sqrt n -1) n} $

para que podamos atravesar todas las células en ese subsuelo por el siguiente pseudocode.

$ \ quad $ para $ fila $ en $ 1, 2, \ CDOTS, \ SQRT N $
$ \ quad \ quad $ para $ columna $ en $ 1 , 2, \ cdots, \ sqrt n $
$ \ quad \ quad \ quad $ Visite la celda en $ fila $ -th fila y $ columna $ -th columna del subsquare en $ (j, k) $ , que es $ C _ {(J-1) \ SQRT N \ CDOT N + (K-1) \ SQRT N + (fila -1) n + columna} $

Nota " $ fila $ -th fila y $ columna $ « se refieren a la columna " Células en ese subsisto.

Por ejemplo, atravesaremos las células en Subsquare (2,3) en el siguiente orden.

  • Células en su primera fila, $ C_ {34} $ , $ c_ {35} $ , $ c_ {36} $ ,
  • células en su segunda fila, $ c_ {43} $ , $ C_ {44} $ , $ c_ {45} $ ,
  • células en su tercera fila, $ c_ {52} $ , $ C_ {53} $ , $ c_ {54} $ .
Licenciado bajo: CC-BY-SA con atribución
No afiliado a cs.stackexchange
scroll top