KiKi得到了两个n行m列的矩阵,他想知道两个矩阵是否相等,请你回答他。(当两个矩阵对应数组元素都相等时两个矩阵相等)。
KiKi得到了两个n行m列的矩阵,他想知道两个矩阵是否相等,请你回答他。(当两个矩阵对应数组元素都相等时两个矩阵相等)。
第一行包含两个整数n和m,表示两个矩阵包含n行m列,用空格分隔。
从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第一个矩阵中的元素。
从n+2行到2n+1,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第二个矩阵中的元素。1 < n,m < 10
一行,如果两个矩阵相等输出"Yes"并换行,否则输出"No"并换行。
2 2 1 2 3 4 1 2 3 4
Yes
int main() {
int a = 0;
int b = 0;
int i = 0;
int j = 0;
int n = 0;
int m = 0;
int pd = 0;
int zhen1[20][20];
int zhen2[20][20];
scanf("%d %d", &n, &m);
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
scanf("%d", &zhen1[i][j]);
}
}
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
scanf("%d", &zhen2[i][j]);
}
}
if (n == m)
{
pd = 0;
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
if (!(zhen1[i][j] == zhen2[i][j] || zhen1[i][j] == zhen2[j][i]))
{
pd = 1;
break;
}
}
if (pd == 1)
{
break;
}
}
}
else
{
pd = 0;
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
if (zhen1[i][j] != zhen2[i][j])
{
pd = 1;
break;
}
}
if (pd == 1)
{
break;
}
}
}
if (pd == 0)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
return 0;
} 先处理行列数都相等的情况,如果互为转置矩阵也要进行判断,行列不等的情况直接判断是否全部相等即可
#include <stdio.h>
int main() {
int n,m,tmp,flag=0;
scanf("%d %d",&n,&m);
int arr[n][m];
int i = 0;
int j = 0;
for(i = 0;i<n;i++)
{
for(j = 0;j<m;j++)
{
scanf("%d",&arr[i][j]);
}
}
for(i = 0;i<n;i++)
{
for(j = 0;j<m;j++)
{
scanf("%d",&tmp);
if(tmp != arr[i][j])
{
break;
}
else {
flag++;
}
}
if(!flag)
break;
}
if(flag == n*m)
{
printf("Yes\n");
}
else {
printf("No\n");
}
return 0;
} #include<stdio.h>
void My_scanf(int arr[10][10],int n,int m)
{
int i = 0;
int j = 0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d ",&arr[i][j]);
}
}
}
int Compare(int arr1[10][10],int arr2[10][10],int n, int m)
{
int i = 0;
int j = 0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(arr1[i][j]!=arr2[i][j])
{
return 0;
}
}
}
return 1;
}
int main()
{
int n = 0;
int m = 0;
scanf("%d %d",&n,&m);
int arr1[10][10];
int arr2[10][10];
My_scanf(arr1,n,m);
My_scanf(arr2,n,m);
int ret = Compare(arr1,arr2,n,m);
if(ret==1)
printf("Yes\n");
else
printf("No\n");
return 0;
} #include <stdio.h>
int main()
{
int m, n;
scanf("%d %d", &m, &n);
int arr1[m][n], arr2[m][n];
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
scanf(" %d", &arr1[i][j]);
}
}
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
scanf(" %d", &arr2[i][j]);
}
}
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
if (arr1[i][j] != arr2[i][j])
{
printf("No\n");
return 0;
}
}
}
printf("Yes\n");
return 0;
} #include <stdio.h>
int main() {
int n,m;
scanf("%d %d", &n, &m);
int a[10][10],b[10][10];
//检查输入
if(n >10 || m > 10)
{
perror("scanf-n-m fail");
return -1;
}
//输入数据
for(int i = 0; i < n; i ++)
{
for(int j = 0; j< m; j++)
{
scanf("%d", &a[i][j]);
}
}
for(int i = 0; i < n; i ++)
{
for(int j = 0; j< m; j++)
{
scanf("%d", &b[i][j]);
}
}
//检查数据
for(int i = 0; i < n; i ++)
{
for(int j = 0; j< m; j++)
{
//有一个不同即为不同
if(a[i][j] != b[i][j])
{
printf("No\n");
return 0;
}
}
}
printf("Yes\n");
return 0;
} #include <stdio.h>
#include <malloc.h>
int main()
{
int n = 0;
int m = 0;
int i = 0;
int j = 0;
int* p1 = NULL;
int* p2 = NULL;
scanf("%d%d", &n, &m);
//开辟空间
p1 = (int*)malloc(sizeof(int) * n *m);
if(!p1)
{
perror("malloc:p1");
return 1;
}
p2 = (int*)malloc(sizeof(int) * n * m);
if(!p2)
{
perror("malloc:p2");
return 1;
}
//录入数据
for(i = 0; i < n; i++)//数列1
{
for(j = 0; j < m; j++)
{
scanf("%d", p1 + (i * m) + j);
}
}
for(i = 0; i < n; i++)//数列2
{
for(j = 0; j < m; j++)
{
scanf("%d", p2 + (i * m) + j);
//相等判断
if(*(p2 + (i * m) + j) != *(p1 + (i * m) + j))
{
printf("No\n");
goto end;
}
}
}
printf("Yes\n");
end:
free(p1);
free(p2);
p1 = NULL;
p2 = NULL;
return 0;
} #include <stdio.h>
int main() {
int n, m;
scanf("%d %d", &n, &m);
int arr_1[n][m];
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
scanf("%d", &arr_1[i][j]);
}
}
int arr_2[n][m], tag=0;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
scanf("%d", &arr_2[i][j]);
if(arr_2[i][j] != arr_1[i][j]){
tag++;
break;
}
}
if(tag != 0){
break;
}
}
if(tag == 0){
printf("Yes\n");
}else{
printf("No\n");
}
return 0;
} #include <stdio.h>
#include<stdlib.h>
int main() {
int m,n,a[15][15],b[15][15];
scanf("%d %d",&m,&n);
for(int i=0;i<m;i++){
for(int j=0;j<n;j++)scanf("%d",&a[i][j]);//输入第一个矩阵
}
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
scanf("%d",&b[i][j]);//输入第二个矩阵
if(b[i][j]!=a[i][j]){
printf("No\n");
exit(0);//若当前输入的值与第一个矩阵不同,则输出No,且立刻退出程序
}
}
}
printf("Yes");//若没有被判定为No,则输出Yes
return 0;
} #include <stdio.h>
//就是两个矩阵内容的对比
int main()
{
int n,m=0;
int arr[100][100];
int acc[100][100];
int count=0;
while(scanf("%d %d",&n,&m)!=EOF)
{
//第一个矩阵
for(int i = 0;i<n;i++)
{
for(int j = 0;j<m;j++)
{
scanf("%d",&arr[i][j]);
}
}
//第二个矩阵
for(int i = 0;i<n;i++)
{
for(int j = 0;j<m;j++)
{
scanf("%d",&acc[i][j]);
//获取到值后跟arr比较
if(arr[i][j]!=acc[i][j])
{
count++;
}
}
}
if(count==0)
{
printf("Yes");
}
else
{
printf("No");
}
}
return 0;
} #include <stdio.h>
int main()
{
int n,m;
scanf("%d %d",&n,&m);
int i;
int arr[n][m];
for(i=0;i<n;i++)//第一个矩阵的输入
{
int j;
for(j=0;j<m;j++)
{
scanf("%d ",arr[i]+j);
}
}
int flag = 1;
int aee[n][m];
for(i=0;i<n;i++)//第二个矩阵的输入
{
int j;
for(j=0;j<m;j++)
{
scanf("%d ",aee[i]+j);
if(arr[i][j] != aee[i][j])
{
flag = 0;
}
}
}
if(flag == 1)
{
printf("Yes");
}
else {
printf("No");
}
return 0;
} #include <stdio.h>
int main() {
int a, b;
int sum = 0;
scanf("%d %d", &a, &b);
int num = a * b;
int x[num], y[num];
for (int i = 0; i < num; i++) {
scanf("%d", &x[i]);
}
for (int i = 0; i < num; i++) {
scanf("%d", &y[i]);
}
for (int i = 0; i < num; i++) {
if (x[i] == y[i]) sum++;
}
if (sum == num) printf("Yes\n");
else printf("No\n");
return 0;
}