假设有两个二维矩阵,A 和 B
A = [
[1,2,3],
[4,5,6],
[7,8,9]
]
B = [
[2,3,9],
[5,6,7],
[8,9,0]
]
A 和 B 在维度上是相同的。A[i], B[i] 是 64 位整数
从A的第2列可以看出,矩阵A与B重叠,所以重叠的位置为1,重叠的长度为2;
一个天真的方法如下:
int N = 3; // row
int M = 3; // col
int A[3][3] = {
{1,2,3},
{4,5,6},
{7,8,9}
};
int B[3][3] = {
{2,3,9},
{5,6,7},
{8,9,0}
};
for (int i = 0; i < M;i++) {
int j = 0;
for (j = 0; j < M-i; j++) {
int k = 0;
for (k = 0; k < N; k++) {
if (A[k][i + j] != B[k][j]) {
break;
}
}
if (k < N) break;
}
if (j == M - i) return i;
}