问题 3758 --子矩阵(完善程序)

3758: 子矩阵(完善程序)★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 427  解决: 367
[提交][状态][命题人:]

题目描述

输入一个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;
}

输入

输出

样例输入
Copy
6 6
1 2 3 1 2 3
4 5 6 4 5 6
7 8 9 7 8 9
1 2 3 1 2 3
4 5 6 4 5 6
7 8 9 7 8 9
3 3
1 2 3
4 5 6
7 8 9
样例输出
Copy
1 1
1 4
4 1
4 4

提示

来源

[提交][状态]