【发布时间】:2016-02-01 18:29:14
【问题描述】:
我正在解决一项涉及矩阵的算法任务。 我需要在一个较大的正方形中计算每个内部正方形(较小的矩阵)。 原始长度和每个下一个长度之间是否存在依赖关系? 作为一个例子,我有这个矩阵:
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
19 20 21 22 23 24
25 26 27 28 29 30
31 32 33 34 35 36
如你所见Rows = 6、Cols = 6、Length = Rows * Cols;
问题陈述:如何计算内矩阵的长度:
8 9 10 11
14 15 16 17
20 21 22 23
26 27 28 29
最后一个
15 16
21 22
我能做什么:
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++){
//mirrored row and col e.g. 0 1 2 3 2 1 0
int rowMir = i >= (int)Math.round(M/2.0d) ? (M - 1 - i) : i;
int colMir = j >= (int)Math.round(N/2.0d) ? (N - 1 - j) : j;
int depth = row > col ? col : row; //depth of inner square for each element in iteration. square's border in other words.
//In current matrix there are 3 inner squares (0, 1, 2)
}
}
它有用吗?我试图根据我得到的值来计算它,但直到现在还没有成功。在这种情况下,谷歌搜索没有给我任何信息。
编辑
我正在寻找的解决方案是动态获取每个元素的矩阵大小。 [i][j] 的值示例我计算了 depth,它所属的内部矩阵。
【问题讨论】:
-
原始矩阵是否总是正方形(行 == 列)?
-
如果外矩阵是
6x6,那么根据你对内矩阵的定义,它们的大小将是4x4和2x2,即每边的大小减少2,对于每个内矩阵。不需要看数据。因此,如果原始矩阵是13x10,那么内部矩阵将是:11x8、9x6、7x4和5x2,并且所有矩阵的长度将是130、88、54,28,10. -
那么,如果起始矩阵是 4x4,你想要里面所有不同的 1x1、2x2 和 3x3 区域的元素数之和?或者构造一个“内部”矩阵是否意味着只保留不在外边界上的元素?
-
@JeanLogeat,并非总是如此,例如,它可能是
6x5。 -
恐怕我找不到“问题陈述”和显示代码之间的关联。
M和N是什么?当row和col永远不会改变时,为什么depth会一遍又一遍地计算?这两个循环的目的是什么?rowMir和colMir将计算到数字 0-2,因此它们永远不会是问题陈述中显示为第一个内部矩阵的4x4。
标签: java algorithm matrix implementation