Comment déterminer mathématiquement la ligne, la colonne et le sous-carré de la cellule dans la matrice NXN où N est un carré parfait?

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

  •  29-09-2020
  •  | 
  •  

Question

Compte tenu d'un tableau unidimensionnel de taille NXN, où N est un carré parfait

 pic 1

Comment peut-on déterminer mathématiquement la ligne, la colonne et / ou le sous-carré, la cellule réside dans?De plus, y a-t-il une façon mathématique de traverser le sous-comité?

 Entrez la description de l'image ici

Était-ce utile?

La solution

Laissez les cellules unidimensionnelles être $ C_1, c_2, \ CDOT, c_ {n ^ 2} $

.

.

suppose que la cellule supérieure gauche est à $ (1,1) $ , c'est-à-dire la première ligne et la première colonne. Supposons que la cellule supérieure droite est à $ (1, n) $ , c'est-à-dire la première ligne et la $ n $ < / span> -ème colonne. Alors la $ i $ -ème cellule, $ C_I $ est chez $ (i / n + 1, i \% n +1) $ . Ici $ I / N $ est la la division entier et $ i \% n $ est l'opération modulo dans n'importe quel langage de programmation populaire. Par exemple, laissez $ n= 9 $ . Alors la 42 $ $ -ème cellule, $ C_ {42} $ est chez $ (42/9 + 1, 42 \% 9 + 1)= (5, 7) $ .

Supposons que les sous-solutions soient alignées dans le même ordre que les cellules, de sorte que nous avons des sous-solutions $ S1, S2, \ CDOT, sn $ . Considérez chaque sous-comparable comme une sorte de «grande cellule». Pour que nous ayons les coordonnées suivantes pour les sous-solutions.

Entrez la description de l'image ici

Notez que $ c_i $ appartient à la $ (i / n + 1) $ -th Subsquare, c'est-à-dire sous-marine S (I / N + 1) $ . Par exemple, $ c_ {37} $ appartient à la 5 $ -th sous-comte, c'est-à-dire, sous-matériel < Span Classe="Conteneur mathématique"> $ S5 $ . Nous sommes dans la même situation qu'avant, mais avec la $ (I / N + 1) $ -ème "grande cellule" et une $ \ sqrt n \ fois \ sqrt n $ de" grandes cellules ". De même, on voit que nous voyons que la $ (i / n + 1) $ -ème sous-salaire est à $ ((i / n +1) / \ sqrt n + 1, (i / n + 1) \% \ sqrt n + 1) $ , en utilisant les coordonnées des sous-solutions.

Supposons que nous voulions traverser le sous-comparatif à $ (j, k) $ (où $ (j, k) $ est dans les coordonnées des sous-solutions).

  • La première cellule (la cellule supérieure gauche) de ce sous-comar est $ C _ {(J-1) \ sqrt n \ cdot n + (k-1) \ sqrt n \ sqrt n +1} $
  • La première cellule de la deuxième ligne de ce sous-comparable est $ C _ {(j-1) \ sqrt n \ CDOT n + (k-1) \ sqrt n +1 + n} $
  • $ \ CDOT $
  • La première cellule de la dernière ligne de ce sous-comparable est $ C _ {(j-1) \ sqrt n \ cdot n + (k-1) \ sqrt n + 1 + (\ sqrt n -1) n} $

Nous pouvons donc traverser toutes les cellules dans ce sous-comité par le pseudocode suivant.

$ \ quad $ pour $ ligne $ in 1 $, 2, \ CDOT, \ SQRT N $
$ \ quad \ quad $ pour $ colonne $ in $ 1 , 2, \ CDOT, \ SQRT N $
$ \ quad \ quad \ quad \ quad $ visitez la cellule à $ rangée $ -th ligne et $ colonne $ -th colonne du sous-salaire à $ (j, k) $ , qui est $ C _ {(J-1) \ SQRT N \ CDOT N + (k-1) \ sqrt n + (rangée -1) n + colonne} $

note " $ Row $ -th ligne et $ colonne $ -th colonne" fait référence à cellules dans ce sous-comble.

Par exemple, nous traverserons les cellules au sous-comar (2,3) dans l'ordre suivant.

  • cellules dans sa première rangée, $ c_ {34} $ , $ c_ {35} $ , $ c_ {36} $ ,
  • cellules dans sa deuxième ligne, $ c_ {43} $ , $ C_ {44} $ , $ C_ {45} $ ,
  • cellules dans sa troisième rangée, $ c_ {52} $ , $ C_ {53} $ , $ c_ {54} $ .
Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top