如何在数学上确定NXN阵列中单元格的行,列和子平方,其中n是完美的正方形?
-
29-09-2020 - |
解决方案
让一维小区是 $ 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} $ 。