编程题

(子矩阵)给输入一个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++)

             ①                  

haveAns=false;

for(i=1;i<=n1-n2+1;i++)

for(j=1;j<=                ②         ;j++){

                ③       ;

for(k1=1;k1<=n2;k1++)

for(k2=1;k2<=           ④          ;k2++){

if(a[i+k1-1][j+k2-1]!=b[k1][k2])

good=false;

}

if(good){

cout<<i<<''<<j<<endl;

            ⑤           ;

}

}

if(!haveAns)

cout<<"There is no answer"<<endl;

return 0;

}

查看答案
赣ICP备20007335号-2