最大重叠问题:二进制矩阵的滑动重叠
题目描述
在计算机图形学或图像处理领域,我们经常需要解决如何计算两张图像的重叠度的问题。这个问题可以通过多个方式来理解,最常见的方式是通过“平移”或“滑动”来对比两张图像之间的重叠区域。
问题描述
给定两个二进制矩阵 img1
和 img2
,它们都是大小为 n×n 的正方形矩阵。矩阵的元素只有 0 或 1。现在,我们可以对其中一个图像进行平移操作,允许图像的 1 在四个方向(左、右、上、下)上滑动任何数量的单位。我们的目标是将其中一个图像滑动并覆盖到另一个图像的上面,计算两者重叠的 1 的个数,最终返回最大可能的重叠数量。
需要注意的是,转换过程中不允许旋转矩阵,越过矩阵边界的 1 会被清除。
任务
编写一个函数,给定两个二进制矩阵 img1
和 img2
,返回两者最大重叠的 1 的数量。
约束
- 1≤n≤30
img1
和img2
是 n×n 的矩阵,包含 0 和 1。
解题分析
问题本质
问题的本质是计算两个矩阵 img1
和 img2
通过平移操作后的重叠部