首页 > 试题广场 >

矩阵相等判定

[编程题]矩阵相等判定
  • 热度指数:26584 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

KiKi得到了两个nm列的矩阵,他想知道两个矩阵是否相等,请你回答他。(当两个矩阵对应数组元素都相等时两个矩阵相等)。


输入描述:

第一行包含两个整数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"并换行。
示例1

输入

2 2
1 2
3 4
1 2
3 4

输出

Yes
#include <stdio.h>

int main() {
    int n,m,i,j,k,t=0;
    int sum1=0,sum2=0;
    scanf("%d%d",&n,&m);
    int a[100][100]={0};
    int b[100][100]={0};
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            scanf("%d",&a[i][j]);
            sum1=sum1+a[i][j];
        }
    }
    for(int k=0;k<n;k++)
    {
        for(int t=0;t<m;t++)
        {
            scanf("%d",&b[k][t] );
            sum2=sum2+b[k][t];
        }
    }
    if(sum1-sum2==0)
    {
        printf("Yes\n");
    }
    else{
        printf("No\n");
    }
    return 0;
}
发表于 2025-02-23 18:32:48 回复(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;
}

发表于 2024-12-31 11:08:44 回复(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;
}

发表于 2024-08-17 18:21:33 回复(0)
#include <stdio.h>

int main() {
    int a,b;
    scanf("%d%d",&a,&b);
    int arr[a+a][b+b];
    for(int i=0;i<2*a;i++)
    {
        for(int j=0;j<b;j++)
        scanf("%d",&arr[i][j]);
    }
    int c=0;
    for(int i=0;i<a;i++)
    {
        for(int j=0;j<b;j++)
        {
           if((arr[i][j]-arr[a+i][j])!=0)
           c=1;
        }
    }
    if(c==0)
    printf("Yes\n");
    else
     printf("No");
    return 0;
}
发表于 2024-08-02 20:33:40 回复(0)
#include <stdio.h>

int main() {
    int m = 0, n = 0;
    int arr1[10][10] = { 0 };
    int arr2[10][10] = { 0 };
    scanf("%d %d", &m, &n);
    int i = 0, j = 0;
    int count = 0;
    for (i = 0; i < m; i++) {
        for (j = 0; j < n; j++) {
            scanf("%d", &arr1[i][j]);
        }
    }
    for (i = 0; i < m; i++) {
        for (j = 0; j < n; j++) {
            scanf("%d", &arr2[i][j]);
        }
    }
    for (i = 0; i < m; i++) {
        for (j = 0; j < n; j++) {
            if (arr1[i][j] == arr2[i][j])
                count++;
        }
    }
    if (count == m * n) {
        printf("Yes\n");
    } else {
        printf("No\n");
    }
    return 0;
}
发表于 2024-07-16 18:43:46 回复(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;
}

发表于 2024-07-04 02:59:19 回复(0)
#include<stdio.h>
int main() {
    int n, m;
    scanf("%d%d", &n, &m);
    //int a[n][m];
    // int b[n][m];
    int ab[2 * n][m];   //两个n行m列矩阵
    for (int i = 0; i < 2 * n; i++) {
        for (int j = 0; j < m; j++) {
            scanf("%d", &ab[i][j]);
        }
    }
    int flag = 1;  //默认矩阵相等

    //遍历比较,若存在两矩阵中有元素不等,flag=0,直接结束循环
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if (ab[i][j] != ab[i + n][j]) {
                flag = 0;
                break;
            }
        }
    }
    if (flag == 1)
        printf("Yes\n");
    else
        printf("No\n");
    return 0;
}
发表于 2024-05-19 21:27:03 回复(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;
}

编辑于 2024-03-20 15:56:39 回复(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;
}

编辑于 2024-02-03 11:57:44 回复(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;
}

编辑于 2024-01-14 09:48:30 回复(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;
}

发表于 2023-11-20 23:19:34 回复(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;
}

发表于 2023-11-10 10:13:23 回复(0)
#include <stdio.h>

int main()
{
    int n,m;//矩形的格式
    scanf("%d %d",&n,&m);
    int arr1[50][50];
    int arr2[50][50];
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            scanf("%d ",&arr1[i][j]);
        }
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            scanf("%d ",&arr2[i][j]);
        }
    }//输入两个数组
    int count=0;//创建一个计数器
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            if(arr1[i][j]==arr2[i][j])
            {
                count++;//每次相等就++
            }
        }
    }
    if(count==n*m)//当count==数组的所有数时,说明两个数组相等
    {
        printf("Yes\n");
    }
    else {
    printf("No\n");
    }
    return 0;
}
发表于 2023-04-12 13:42:32 回复(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;
}

发表于 2023-03-22 12:18:32 回复(0)
#include <stdio.h>
int main()
{
    int n = 0,m = 0;
    int arr[11][11] = {0},arr2[11][11] = {0};
    scanf("%d%d",&n,&m);
    for(int i = 1;i<=n;i++)//输入
    {
        for(int j = 1;j<=m;j++)
        {
            scanf("%d",&arr[i][j]);
        }
    }
    for(int i = 1;i<=n;i++)//输入
    {
        for(int j = 1;j<=m;j++)
        {
            scanf("%d",&arr2[i][j]);
        }
    }
    for(int i = 1;i<=n;i++)//比较
    {
        for(int j = 1;j<=m;j++)
        {
            if(arr[i][j]!=arr2[i][j])
            {
                printf("No");
                return 0;
            }
        }
    }
    printf("Yes");
    return 0;
}

发表于 2023-03-16 19:25:10 回复(0)
#include <stdio.h>


int main()
{
    int n =0,m =0;
    scanf("%d%d",&n,&m);
    int arr1[100][100] = {0};
    int arr2[100][100] = {0};
    int i =0;
    int j =0;
    for(i =0;i<n;i++){
        for(j=0;j<m;j++){
            scanf("%d",&arr1[i][j]);
        }
    }
    for(i =0;i<n;i++){
        for(j =0;j<m;j++){
            scanf("%d",&arr2[i][j]);
        }
    }
    int flag = 1;
    for(i =0;i<n;i++){
        for(j =0;j<m;j++){
            if(arr1[i][j]!=arr2[i][j]){
                flag = -1;
                break;
            }
        }
    }
    if(flag == -1){
        printf("No\n");
    }
    else printf("Yes\n");
    return 0;
}

发表于 2023-03-13 22:51:19 回复(0)
#include <stdio.h>

int main()
 {
    int n=0,m=0,i=0,j=0;
    int arr1[10][10];
    int arr2[10][10];
    int flag=1;
    scanf("%d %d",&n,&m);
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            scanf("%d",&arr1[i][j]);
        }
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            scanf("%d",&arr2[i][j]);
        }
    }
     for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            if(arr1[i][j]!=arr2[i][j])
            {
               flag=0;
               break;
            }
        }
        if(flag==0)
            {
                break;
            }
    }
    if(flag==0)
    {
        printf("No\n");
    }
    else
    {
        printf("Yes\n");
    }
     
    return 0;
}

发表于 2023-01-06 19:46:30 回复(0)
简单解法
#include <stdio.h>
int main() {
    int n,m;int arr[200];
    scanf("%d%d",&n,&m);
    for(int i=0;i<2*n*m;i++){
        scanf("%d",&arr[i]);
    }
    int count=0;
    for(int i=0;i<n*m;i++){
        if(arr[i]==arr[i+n*m]){
            count++;
        }
    }
    if(count==n*m){
        printf("Yes");
    }
    else{
        printf("No");
    }

    return 0;
}
发表于 2022-10-28 16:15:08 回复(0)