程序填空题

子矩阵

题目描述

给输入一个 n₁×m₁ 的矩阵 a,和 n₂×m₂ 的矩阵 b,问 a 中是否存在子矩阵和 b 相等。若存在,输出所有子矩阵左上角的坐标:若不存在输出 "There is no 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;
}

(1) ①处应填()。

A. cin>>b[i][j]
B. cin>>a[i][j]
C. cin>>b[n1][m1]
D. cin>>b[n2][m2]

(2) ②处应填()。

A. m1
B. m1 - m2 + 1
C. m1 - 1
D. m1 + 1

(3) ③处应填()。

A. good=0
B. good='1'
C. good=false
D. good=1

(4) ④处应填()。

A. k1 + 1
B. m2
C. m2 - 1
D. k1

(5) ⑤处应填()。

A. break
B. return
C. haveAns=true
D. haveAns=false