C 从矩阵中计算具有给定约束的子矩阵数?
这是在一次面试中提出的问题。我想知道获得理想结果的最佳算法。 问题是:假设你有一个(nxm)矩阵,其中有一些数字。 现在,您必须计算大小>=(2 x 2)的矩阵的数量,这些矩阵将具有以下两个条件:C 从矩阵中计算具有给定约束的子矩阵数?,c,algorithm,data-structures,C,Algorithm,Data Structures,这是在一次面试中提出的问题。我想知道获得理想结果的最佳算法。 问题是:假设你有一个(nxm)矩阵,其中有一些数字。 现在,您必须计算大小>=(2 x 2)的矩阵的数量,这些矩阵将具有以下两个条件: 它应该至少有两个1 矩阵的两个角元素相等 我知道用蛮力算法计算矩阵2x2及以上的所有元素;然后计算1的数量,并检查角元素的6个可能条件,其中任意两个相等。 我想知道如何处理这些问题或任何来源,因为我在“Geeksforgeks”或StackOverFlow本身上找不到任何优化的方法 这是对优化方式
- 它应该至少有两个1李>
- 矩阵的两个角元素相等
我想知道如何处理这些问题或任何来源,因为我在“Geeksforgeks”或StackOverFlow本身上找不到任何优化的方法 这是对优化方式的提示 首先构建一个(n,m)矩阵,计算(1-i,1-j)子矩阵中
1
的数量:nm操作,nm内存
现在,对于矩阵的每个元素,搜索下面的所有相等元素
- 如果在同一行上,您可以使用下面的任何一行使两个角相等的矩阵
- 如果在同一列上,则可以使用后面的任何列使两个角相等的矩阵
- 如果既不在同一行也不在同一列上,则只有一个矩阵的两个角相等
- 预计算矩阵的等价矩阵的极角元素之差为子矩阵中的元素个数
- 一旦一个子矩阵中包含2个以上的子矩阵,所有子矩阵(包括它)都将包含:您可以使用它来短路完整分析
以上只是粗糙的边缘,还有一些工作需要设计算法,但对于足够大的矩阵来说,它应该比蛮力强一点…好吧,我要求的只是一种用几行代码来解决问题的方法,一种可能需要的方法。任何数据结构都是必需的。。