计算大二进制矩阵中小二进制矩阵的外观

时间:2017-08-13 04:47:18

标签: c++ algorithm image-processing matrix bit-manipulation

给定两个二进制矩阵m1和m2,与m1相比,m2保证具有更大或相等的尺寸(在两个维度上)。用C ++编写一个函数来计算m2里面m1的外观。 例如

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。

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

1 个答案:

答案 0 :(得分:0)

如果使用游程编码表示二进制模式,则问题将转换为与压缩表示形式匹配的普通字符串,并且不需要任何位置。

然后你可以采用Boyer-Moore这样的标准算法,当发现不匹配时,你可以使用在所有行中找到的最长的移位。