我正在关注https://taninamdar.files.wordpress.com/2013/11/submatrices3.pdf以查找矩阵的子矩阵的总数。但是如何找到矩阵中存在多少给定大小的子矩阵。 0 <= A <= M且0 <= B <= N 其中AxB(子矩阵大小)和MxN(矩阵大小)。
答案 0 :(得分:4)
我没有通过pdf(数学和我不是朋友),但是简单的逻辑就足够了。简单地说,尝试减少维度:您可以在长度为m
的向量中放置多少长度为n
的向量?
答案:n-m+1
。为了说服你,请完成案件。说n = 5
和m = 5
。你有一个可能性。使用n = 5
和m = 4
,您有两个(第二个向量从索引0或索引1开始)。使用n = 5
和m = 3
,您有三个(向量可以从索引0,1或2开始)。对于n = 5
和m = 1
,你有5个,似乎是逻辑。
因此,为了将其应用于矩阵,您必须添加维度。你是怎样做的 ?乘法。有多少长度a
的向量可以放在长度为n
的向量中? n-a+1
。有多少长度b
的向量可以放在长度为m
的向量中? m-b+1
。
那么,您可以在长度为A*B
的矩阵中放置多少个大小为N*M
的矩阵? (N-A+1)*(M-B+1)
。
所以,我没有处理其中一个维度为0的情况。这取决于你如何考虑这种情况。