C++ 计算大二进制矩阵中小二进制矩阵的出现次数

C++ 计算大二进制矩阵中小二进制矩阵的出现次数,c++,algorithm,image-processing,matrix,bit-manipulation,C++,Algorithm,Image Processing,Matrix,Bit Manipulation,给定两个二元矩阵m1和m2,保证m2在两个维度上的大小都大于或等于m1。在C++中编写一个函数,计算M2在M2中的外观。 e、 g m1=[11;11],m2=[11;10;01;01] 然后m1在m2中出现2次,函数应返回整数2 任何人都可以使用基于位操作的方法来有效地解决这个问题吗?如果您使用游程编码表示二进制模式,那么问题会变成一个普通的字符串匹配问题,在压缩表示上,并且不需要位篡改 然后你可以求助于标准算法,比如Boyer–Moore,当发现不匹配时,您可以使用所有行中的最长移位。因此不

给定两个二元矩阵m1和m2,保证m2在两个维度上的大小都大于或等于m1。在C++中编写一个函数,计算M2在M2中的外观。 e、 g

m1=[11;11],m2=[11;10;01;01]

然后m1在m2中出现2次,函数应返回整数2


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

如果您使用游程编码表示二进制模式,那么问题会变成一个普通的字符串匹配问题,在压缩表示上,并且不需要位篡改


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

因此不是代码编写服务。仍在等待您面临的问题。您是否尝试过?从蛮力和嵌套循环开始,比较所有可能性,并使用蛮力解决方案中发现的模式来微调您的解决方案。是,我会使用位技巧/操作来打包数据,并行执行比仅使用一些基本类型来存储单个位更多的位操作。上一次的加速大约是300倍。直觉上,我考虑过使用位技巧,因为这两个矩阵是二进制矩阵。但我随后意识到,简单地将矩阵的行转换为无符号长整数具有大小限制。谢谢你的字符串匹配的想法!