判断一个矩阵是另一个矩阵的子矩阵C++
时间: 2024-09-30 21:12:53 浏览: 35
判断一个矩阵A是否是另一个矩阵B的子矩阵,意味着A可以完全通过行和列的重排嵌入到B中。在C++中,你可以使用双重循环来比较两个矩阵的每个元素。以下是一个简单的示例代码:
```cpp
#include <iostream>
#include <vector>
bool isSubMatrix(std::vector<std::vector<int>>& B, std::vector<std::vector<int>>& A) {
int mB = B.size(), nB = B[0].size();
int mA = A.size(), nA = A[0].size();
// 遍历所有可能的子矩阵位置
for (int i = 0; i <= mB - mA; ++i) {
for (int j = 0; j <= nB - nA; ++j) {
bool isValid = true;
// 检查A的所有元素是否都在B的这个位置上
for (int k = 0; k < mA && isValid; ++k) {
for (int l = 0; l < nA && isValid; ++l) {
if (A[k][l] != B[i + k][j + l]) {
isValid = false;
break;
}
}
}
// 如果所有的元素都匹配,说明找到了子矩阵
if (isValid)
return true;
}
}
return false;
}
int main() {
std::vector<std::vector<int>> B = {{1, 2}, {3, 4}};
std::vector<std::vector<int>> A = {{1, 3}, {2, 4}};
if (isSubMatrix(B, A)) {
std::cout << "Matrix A is a submatrix of Matrix B." << std::endl;
} else {
std::cout << "Matrix A is not a submatrix of Matrix B." << std::endl;
}
return 0;
}
```
阅读全文