c语言 判断一个矩阵是另一个矩阵的子矩阵
时间: 2023-12-02 10:05:54 浏览: 93
可以通过遍历大矩阵中的每个元素,判断是否与子矩阵的左上角元素相等,如果相等则比较子矩阵中的所有元素与大矩阵中对应的元素是否相等。如果都相等,则子矩阵是大矩阵的子矩阵。
具体实现可以参考以下代码:
```c
#include <stdio.h>
int isSubMatrix(int bigMatrix[][3], int smallMatrix[][2], int bigRows, int bigCols, int smallRows, int smallCols) {
int i, j, k, l;
for (i = 0; i <= bigRows - smallRows; i++) {
for (j = 0; j <= bigCols - smallCols; j++) {
if (bigMatrix[i][j] == smallMatrix[0][0]) { // 找到相等的左上角元素
for (k = 0; k < smallRows; k++) {
for (l = 0; l < smallCols; l++) {
if (bigMatrix[i+k][j+l] != smallMatrix[k][l]) { // 比较所有元素是否相等
break;
}
}
if (l < smallCols) { // 如果有元素不相等,则退出循环
break;
}
}
if (k == smallRows) { // 所有元素都相等,则是子矩阵
return 1;
}
}
}
}
return 0;
}
int main() {
int bigMatrix[4][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}};
int smallMatrix[2][2] = {{5, 6}, {8, 9}};
int bigRows = 4, bigCols = 3, smallRows = 2, smallCols = 2;
if (isSubMatrix(bigMatrix, smallMatrix, bigRows, bigCols, smallRows, smallCols)) {
printf("smallMatrix is a submatrix of bigMatrix.\n");
} else {
printf("smallMatrix is not a submatrix of bigMatrix.\n");
}
return 0;
}
```
阅读全文