(子矩阵)给输入一个n1*m1的矩阵a,和n2*m2的矩阵b,问a中是否存在子矩阵和b相等。若存在,输出所有子矩阵左上角的坐标:若不存在输出“There isno answer”。
#include<iostream> using namespace std; const int SIZE = 50; int n1, m1, n2, m2, a[SIZE][SIZE], b[SIZE][SIZE]; int main( ) { int i, j, k1, k2; bool good, haveAns; cin >> n1 >> m1; for (i = 1; i <= n1; i++) for (j = 1; j <= m1; j++) cin >> a[i][j]; cin >> n2 >> m2; for (i = 1; i <= n2; i++) for (j = 1; j <= m2; j++) 1; haveAns = false; for (i = 1; i <= n1 - n2 + 1; i++) for (j = 1; j <= 2; j++) { 3; for (k1 = 1; k1 <= n2; k1++) for (k2 = 1; k2 <= 4; k2++) { if (a[i + k1 - 1][j + k2 - 1] != b[k1][k2]) good = false; } if (good) { cout << i << ' ' << j << endl; 5; } } if (!haveAns) cout << "There is no answer" << endl; return 0; }