【问题标题】:N*N matrix, Count number of unique square matrices..? [closed]N * N矩阵,计算唯一方阵的数量..? [关闭]
【发布时间】:2012-09-11 08:14:21
【问题描述】:

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

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

【问题讨论】:

  • 出于兴趣,您何时会使用此信息?
  • 在您的上下文中,什么是“更大矩阵中的方阵”?您是否包含 1×1 矩阵,还是仅包含 2×2 及以上?您只选择连续运行的行或列,还是任意子集?
  • @MvG,是的,绝对是,只是想你给了一个 N*N 棋盘,你需要计算所有可能的方格数..!!请快速高效地提出一些建议。

标签: java algorithm matrix data-structures


【解决方案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)

我希望你能理解这里 squares 的意义。

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

【讨论】:

  • 是的,这是正确的,但这确实需要太多时间,(蛮力)实际上创建的矩阵实际上是 N->[2,50,000..3,00,000] 每个元素实际上被标记为bit[On/Off],我需要得到所有那些大于某个限制(比如20)的唯一方阵,并且矩阵的所有元素都应该是1。
  • @KDjava 那么您需要使用所有这些详细信息编辑问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-11
  • 1970-01-01
  • 2011-06-30
  • 1970-01-01
  • 1970-01-01
  • 2021-08-07
  • 2014-12-13
相关资源
最近更新 更多