输入一个n1*m1的矩阵a,和一个n2*m2的矩阵b,问a中是否存在一个子矩阵和b相等。
若存在,输出所有子矩阵左上角的坐标;若不存在输出“There is no answer”。
#include<iostream> #include<cstdio> using namespace std; const int SIZE=50; int n1,m1,n2,m2,a[SIZE][SIZE],b[SIZE][SIZE]; bool good,ans; int main() { scanf("%d%d",&n1,&m1); for(int i=1;i<=n1;i++) for(int j=1;j<=m1;j++) scanf("%d",&a[i][j]); scanf("%d%d",&n2,&m2); for(int i=1;i<=n2;i++) for(int j=1;j<=m2;j++) ______(1)______; ans=0; for(int i=1;i<=n1-n2+1;i++) for(int j=1;j<=______(2)____;j++) { _____(3)______; for(int k1=1;k1<=n2;k1++) for(int k2=1;k2<=____(4)_____;k2++) if(a[i+k1-1][j+k2-1]!=b[k1][k2]) good=false; if(good) { printf("%d %d\n",i,j); ans=1; } } if(!ans) printf("There is no answer\n"); return 0; }