Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 从矩阵中计算具有给定约束的子矩阵数?_C_Algorithm_Data Structures - Fatal编程技术网

C 从矩阵中计算具有给定约束的子矩阵数?

C 从矩阵中计算具有给定约束的子矩阵数?,c,algorithm,data-structures,C,Algorithm,Data Structures,这是在一次面试中提出的问题。我想知道获得理想结果的最佳算法。 问题是:假设你有一个(nxm)矩阵,其中有一些数字。 现在,您必须计算大小>=(2 x 2)的矩阵的数量,这些矩阵将具有以下两个条件: 它应该至少有两个1 矩阵的两个角元素相等 我知道用蛮力算法计算矩阵2x2及以上的所有元素;然后计算1的数量,并检查角元素的6个可能条件,其中任意两个相等。 我想知道如何处理这些问题或任何来源,因为我在“Geeksforgeks”或StackOverFlow本身上找不到任何优化的方法 这是对优化方式

这是在一次面试中提出的问题。我想知道获得理想结果的最佳算法。 问题是:假设你有一个(nxm)矩阵,其中有一些数字。 现在,您必须计算大小>=(2 x 2)的矩阵的数量,这些矩阵将具有以下两个条件:

  • 它应该至少有两个1
  • 矩阵的两个角元素相等
我知道用蛮力算法计算矩阵2x2及以上的所有元素;然后计算1的数量,并检查角元素的6个可能条件,其中任意两个相等。
我想知道如何处理这些问题或任何来源,因为我在“Geeksforgeks”或StackOverFlow本身上找不到任何优化的方法

这是对优化方式的提示

首先构建一个(n,m)矩阵,计算(1-i,1-j)子矩阵中
1
的数量:nm操作,nm内存

现在,对于矩阵的每个元素,搜索下面的所有相等元素

  • 如果在同一行上,您可以使用下面的任何一行使两个角相等的矩阵
  • 如果在同一列上,则可以使用后面的任何列使两个角相等的矩阵
  • 如果既不在同一行也不在同一列上,则只有一个矩阵的两个角相等
  • 预计算矩阵的等价矩阵的极角元素之差为子矩阵中的元素个数
  • 一旦一个子矩阵中包含2个以上的子矩阵,所有子矩阵(包括它)都将包含:您可以使用它来短路完整分析

以上只是粗糙的边缘,还有一些工作需要设计算法,但对于足够大的矩阵来说,它应该比蛮力强一点…

好吧,我要求的只是一种用几行代码来解决问题的方法,一种可能需要的方法。任何数据结构都是必需的。。