0

我有一个 N*N 矩阵,我需要找出该较大矩阵中所有可能的唯一方阵。如何实现它又快又省内存呢?

面临的问题:实际上创建的矩阵实际上是 N->[2,50,000..3,00,000] 每个元素实际上被标记为 bit[On/Off] 或 [0/1],我需要得到所有那些大于某个限制的唯一方阵(比如20 ie; N> = 20),并且方阵的所有元素都应该是1,那么只有矩阵用于进一步处理,所以基本上我需要找出这样的矩阵。

4

1 回答 1

1

算法很简单:

  1. 计算方阵的数量
  2. 在这个数字上使用循环
  3. 为每个矩阵计算i_min, j_min, i_max, 。j_max这将只是一个循环这个矩阵来寻找具有特定大小的矩阵。
  4. 将数据范围i_min, j_min, i_max,复制j_max到新矩阵。

只是一个提示:方阵的数量取决于大矩阵大小

  • 1x1 -> 1 * (1x1)
  • 2x2 -> 4 * (1x1) + 1 * (2x2)
  • 3x3 -> 9 * (1x1) + 4 * (2x2) + 1 * (3x3)
  • 4x4 -> 16 * (1x1) + 9 * (2x2) + 4 * (3x3) + 1 * (4x4)

我希望你能理解这里的方块

注意:这仅包括连续的行/列组合。

于 2012-09-11T09:02:37.133 回答