牛客网刷题 ——C语言初阶(6指针)——BC105 矩阵相等判定

1. 题目描述:BC105 矩阵相等判定

牛客网OJ题链接

描述:

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

示例1

输入:

2 2

1 2

3 4

1 2

3 4

输出:Yes

2.思路

用两个二维数组,把数组先接收进来,然后直接for循环判断每个值是否相等。我这里设置了一个标志flag = 0;一旦不相等就flag置为1 。最后全部遍历完之后判断。

3. 代码实现

c 复制代码
//KiKi得到了两个n行m列的矩阵,他想知道两个矩阵是否相等,请你回答他。(当两个矩阵对应数组元素都相等时两个矩阵相等)

#include<stdio.h>
int main()
{

	int m = 0;
	int n = 0;
	scanf("%d %d", &m, &n);
	int i = 0;
	int j = 0;
	int arr1[10][10] = {0};
	int arr2[10][10] = {0};
	for (i = 0; i < m; i++)
	{
		for (j = 0; j < n; j++)
		{
			scanf("%d", &arr1[i][j]);
		}
	}
	int k = 0;
	int o = 0;
	for (k = 0; k < m; k++)
	{
		for (o = 0; o < n; o++)
		{
			scanf("%d", &arr2[k][o]);
		}
	}

	int flag = 0;
	int x = 0;
	int y = 0;
	for (x = 0; x < m; x++)
	{
		for (y = 0; y < n; y++)
		{
			if(arr1[x][y] != arr2[x][y])
			{
				flag = 1;
			}
		}
	}
	if (flag)
	{
		printf("No\n");
	}
	else
		printf("Yes\n");

	return 0;
}

4. 代码实现2

这个加入了goto 语句,因为如果我们已经判断不相等,就不需要判断剩余的了

c 复制代码
#include<stdio.h>
int main() {

    int m = 0;
    int n = 0;
    scanf("%d %d", &m, &n);
    int i = 0;
    int j = 0;
    int arr1[10][10] = {0};
    int arr2[10][10] = {0};
    for (i = 0; i < m; i++) {
        for (j = 0; j < n; j++) {
            scanf("%d", &arr1[i][j]);
        }
    }
    int k = 0;
    int o = 0;
    for (k = 0; k < m; k++) {
        for (o = 0; o < n; o++) {
            scanf("%d", &arr2[k][o]);
        }
    }

    int flag = 0;
    int x = 0;
    int y = 0;
    for (x = 0; x < m; x++) {
        for (y = 0; y < n; y++) {
            if (arr1[x][y] != arr2[x][y]) {
                flag = 1;
                goto end;
            }
        }
    }
end:
    if (flag) {
        printf("No\n");
    } else
        printf("Yes\n");

    return 0;
}

5. 代码实现3

这里我们先获取了第一个数组内容,又获取了第二个数组内容,但是其实我们的目的不是为了获取数组,我们只是为了判断是否相等。所以在第一个数组获取到之后,第二个数组获取的时候就可以直接判断是否相等。

c 复制代码
#include<stdio.h>
int main() {

    int m = 0;
    int n = 0;
    scanf("%d %d", &m, &n);
    int i = 0;
    int j = 0;
    int arr1[10][10] = {0};
    int arr2[10][10] = {0};
    for (i = 0; i < m; i++) {
        for (j = 0; j < n; j++) {
            scanf("%d", &arr1[i][j]);
        }
    }
    int k = 0;
    int o = 0;
      int flag = 0;
    for (k = 0; k < m; k++) {
        for (o = 0; o < n; o++) {
            scanf("%d", &arr2[k][o]);
            if (arr1[k][o] != arr2[k][o]) 
            {
                   flag = 1;
                    goto end;
            }
        }
    }

end:
    if (flag) {
        printf("No\n");
    } else
        printf("Yes\n");

    return 0;
}

6. 代码实现4

其实并不需要再创建两个循环变量,都使用i和j是没问题的,因为我们会给i,j重新赋值为0

c 复制代码
#include<stdio.h>
int main() {

    int m = 0;
    int n = 0;
    scanf("%d %d", &m, &n);
    int i = 0;
    int j = 0;
    int arr1[10][10] = {0};
    int arr2[10][10] = {0};
    for (i = 0; i < m; i++) {
        for (j = 0; j < n; j++) {
            scanf("%d", &arr1[i][j]);
        }
    }

    int flag = 0;
    for (i = 0; i < m; i++) {
        for (j = 0; j < n; j++) {
            scanf("%d", &arr2[i][j]);
            if (arr1[i][j] != arr2[i][j]) 
            {
                   flag = 1;
                    goto end;
            }
        }
    }

end:
    if (flag) {
        printf("No\n");
    } else
        printf("Yes\n");

    return 0;
}
相关推荐
L_autinue_Star1 小时前
手写vector容器:C++模板实战指南(从0到1掌握泛型编程)
java·c语言·开发语言·c++·学习·stl
怀旧,2 小时前
【数据结构】8. 二叉树
c语言·数据结构·算法
凤年徐3 小时前
【数据结构与算法】203.移除链表元素(LeetCode)图文详解
c语言·开发语言·数据结构·算法·leetcode·链表·刷题
学废了wuwu4 小时前
深度学习归一化方法维度参数详解(C/H/W/D完全解析)
c语言·人工智能·深度学习
无小道4 小时前
c++--typedef和#define的用法及区别
c语言·开发语言·汇编·c++
敲上瘾5 小时前
传输层协议UDP原理
linux·c语言·网络·网络协议·udp
小林C语言6 小时前
C语言 | 文件读写检测
c语言
c7_ln7 小时前
MYSQL C_API使用全解
c语言·数据库·mysql
秋说15 小时前
【PTA数据结构 | C语言版】一元多项式求导
c语言·数据结构·算法
暮鹤筠16 小时前
[C语言初阶]操作符
c语言·开发语言