c++实现大矩阵中找出小矩阵
时间: 2023-09-20 20:08:18 浏览: 70
好的,以下是一个用C++实现的子矩阵匹配算法的示例代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
vector<pair<int, int>> findSubmatrix(vector<vector<int>>& matrix, vector<vector<int>>& submatrix) {
vector<pair<int, int>> result;
int m = matrix.size();
int n = matrix[0].size();
int p = submatrix.size();
int q = submatrix[0].size();
for (int i = 0; i <= m - p; i++) {
for (int j = 0; j <= n - q; j++) {
bool match = true;
for (int k = 0; k < p; k++) {
for (int l = 0; l < q; l++) {
if (matrix[i+k][j+l] != submatrix[k][l]) {
match = false;
break;
}
}
if (!match) break;
}
if (match) result.push_back(make_pair(i, j));
}
}
return result;
}
int main() {
vector<vector<int>> matrix = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}
};
vector<vector<int>> submatrix = {
{6, 7},
{10, 11}
};
vector<pair<int, int>> result = findSubmatrix(matrix, submatrix);
for (pair<int, int> p : result) {
cout << "Found submatrix at (" << p.first << ", " << p.second << ")" << endl;
}
return 0;
}
```
这个示例代码接受一个大矩阵和一个小矩阵作为输入,并返回一个包含所有匹配子矩阵位置的向量。在这个示例中,大矩阵是一个4x4的矩阵,小矩阵是一个2x2的矩阵。