C语言如何判断一个矩阵是否是另外一个矩阵的子矩阵

C语言如何判断一个矩阵是否是另外一个矩阵的子矩阵

从(0,0)开始比较,如果不满足,再从(0,1)开始比较,以此类推,如果第0行不满足,
从(1,0)开始比较,以此类推。

img

代码:

#include <stdio.h>
int main()
{
    int a[20][20],b[20][20];
    int m1,n1,m2,n2;
    int i,j,k,t;
    int flag = 0;
    printf("请输入矩阵1的行数和列数:");
    scanf("%d %d",&m1,&n1);
    printf("请输入%d*%d的矩阵\n",m1,n1);
    for(i=0;i<m1;i++)
    {
        for(j=0;j<n1;j++)
            scanf("%d",&a[i][j]);
    }
    printf("请输入矩阵2的行数和列数(不大于矩阵1的行数和列数):");
    scanf("%d %d",&m2,&n2);
    printf("请输入%d*%d的矩阵\n",m2,n2);
    for(i=0;i<m2;i++)
    {
        for(j=0;j<n2;j++)
            scanf("%d",&b[i][j]);
    }

    for (i=0;i<m1-m2;i++)
    {
        for (j=0;j<n1-n2;j++)
        {
            //判断
            flag = 0;
            for(k=0;k<m2;k++)
            {
                for (t=0;t<n2;t++)
                {
                    if(a[k+i][t+j] != b[k][t])
                    {
                        flag = 1;
                        break;
                    }
                }
                if(flag == 1)
                    break;
            }
            if(flag == 0)
            {
                printf("矩阵2是矩阵1的子矩阵");
                return 0;
            }
            
        }
    }
    printf("矩阵2不是矩阵1的子矩阵");
    return 0;

}