C语言如何判断一个矩阵是否是另外一个矩阵的子矩阵
从(0,0)开始比较,如果不满足,再从(0,1)开始比较,以此类推,如果第0行不满足,
从(1,0)开始比较,以此类推。
代码:
#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;
}