牛客网刷题 ——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;
}
相关推荐
南棱笑笑生5 小时前
20251217给飞凌OK3588-C开发板适配Rockchip原厂的Buildroot【linux-5.10】后调通ov5645【只能预览】
linux·c语言·开发语言·rockchip
aduzhe6 小时前
int32 - int32MAX 出现异常
c语言·stm32
摘星编程9 小时前
Ascend C编程语言详解:打造高效AI算子的利器
c语言·开发语言·人工智能
自然常数e9 小时前
深入理解指针(6)
c语言·数据结构·算法·visual studio
一杯美式 no sugar9 小时前
数据结构——栈
c语言·数据结构·
CQ_YM10 小时前
Linux线程控制
linux·c语言·开发语言·线程
lingran__10 小时前
C语言字符函数和字符串函数详解
c语言·开发语言
white-persist11 小时前
【攻防世界】reverse | simple-check-100 详细题解 WP
c语言·开发语言·汇编·数据结构·c++·python·算法
☆cwlulu12 小时前
C/C++ 内存分配函数详解
c语言·c++
程芯带你刷C语言简单算法题15 小时前
Day30~实现strcmp、strncmp、strchr、strpbrk
c语言·学习·算法·c