计算大二进制矩阵中小二进制矩阵的出现

count the appearance of a small binary matrix in a big binary matrix

本文关键字:二进制 小二 计算      更新时间:2023-10-16

给定两个二进制矩阵 m1 和 m2,与 m1 相比,m2 保证具有更大或相等的大小(在两个维度上(。 在 C++ 中编写一个函数来计算 M1 在 M2 中的出现。 例如

m1 = [1 1;1 1], m2 = [1 1 0 0;1 1 0 0;0 0 1 1;0 0 1 1]

然后 M1 在 M2 中出现了 2 次,该函数应该返回整数 2。

任何人都可以使用基于位操作的方法来有效地解决这个问题吗?

如果使用运行长度编码表示二进制模式,则问题将变为在压缩表示形式上与普通字符串匹配的字符串,并且不需要位摆弄。

然后,您可以求助于标准算法,例如Boyer-Moore,当发现不匹配时,您可以使用所有行中找到的最长移位。