如何在数学上确定NXN阵列中单元格的行,列和子平方,其中n是完美的正方形?

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

  •  29-09-2020
  •  | 
  •  

给定尺寸的尺寸阵列,其中n是完美的方形

如何在数学上确定该单元格所在的行,列和/或子平方位于?此外,是否有一种遍历分类的数学方法?

有帮助吗?

解决方案

让一维小区是 $ c_1,c_2,\ cdots,c_ {n ^ 2} $

假设右上角单元格为 $(1,1)$ ,即第一行和第一列。假设顶部右侧单元格在 $(1,n)$ ,即第一行和 $ n $ < / span> -th列。然后 $ i $ -th cell, $ c_i $ $(I / n + 1,i \%n +1)$ 。这里 $ i / n $ 整数 $ i \%n $ 是任何流行的编程语言的模型操作。例如,让 $ n= 9 $ 。然后 $ 42 $ -th cell, $ c_ {42} $ $(42/9 + 1,42 \%9 + 1)=(5,7)$

假设子标准以与细胞相同的顺序排列,因此我们具有子标准 $ s1,s2,\ cdots,sn $ 。考虑每个分类,作为一种“大型电池”。因此,我们将有以下坐标进行分布式。

注意<跨度类=“math-container”> $ c_i $ 属于 $(i / n + 1)$ -th Subsquare,IE Subsquare $ S(I / N + 1)$ 。例如, $ c_ {37} $ 属于 $ 5 $ -th subsquare,即subsquare < SPAN Class=“math-container”> $ s5 $ 。我们与以前相同,但使用 $(i / n + 1)$ -th“大单元”和 $ \ sqrt n \ times \ sqrt n $ ”大单元“。同样,我们看到<跨度类=“math-container”> $(I / n + 1)$ -th subsquare是 $((I / n +1)/ \ sqrt n + 1,(I / n + 1)\%\%\ sqrt n + 1)$ ,使用子标准的坐标。

假设我们要遍历 $(j,k)$ (其中 $(j,k) $ 位于子标准的坐标中)。

  • 该分类的第一个单元格(左上角单元)是 $ c _ {(j-1)\ sqrt n \ cdot n +(k-1)\ sqrt n +1} $
  • 第二行的第一个单元格的第一个单元是 $ c _ {(j-1)\ sqrt n \ cdot n +(k-1)\ sqrt n +1 + n} $
  • $ \ cdots $
  • 该子查询的最后一行的第一个单元格是 $ c _ {(j-1)\ sqrt n \ cdot n +(k-1)\ sqrt n + 1 + (\ sqrt n -1)n} $

所以我们可以通过以下伪代码遍历该分类中的所有细胞。

$ \ quad $ $行$ 中> $ 1,2,\ cdots,\ sqrt n $
$ \ quad \ quad $ for $ latumn $ $ 1 ,2,\ cdots,\ sqrt n $
$ \ quad \ quad \ quad $ 访问 $行$ -th行和 $列$ -th列中 $(j,k)$ ,它是 $ C _ {(j-1)\ sqrt n \ cdot n +(k-1)\ sqrt n +(行-1)n +列} $

note“ $行$ -th行和 $列$ -th列”指代细胞在该分类中。

例如,我们将按以下顺序遍历子标准(2,3)的细胞。

  • 在其第一行中的单元格, $ c_ {34} $ $ c_ {35} $ $ c_ {36} $
  • 电池在其第二行中, $ c_ {43} $ $ c_ {44} $ $ c_ {45} $
  • 第三行中的单元, $ c_ {52} $ $ c_ {53} $ $ c_ {54} $
许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top