牛客网刷题 ——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;
}
相关推荐
iFlyCai2 小时前
C语言中的指针
c语言·数据结构·算法
良木生香5 小时前
【C++初阶】:C++类和对象(下):构造函数promax & 类型转换 & static & 友元 & 内部类 & 匿名对象 & 超级优化
c语言·开发语言·c++
无巧不成书02186 小时前
C语言零基础速通指南 | 1小时从入门到跑通完整项目
c语言·开发语言·编程实战·c语言入门·零基础编程·c语言速通
jimy18 小时前
C语言函数指针
c语言·开发语言
眺望电子-ARM嵌入式10 小时前
RK3588 Type-C一线通,DP显示输出实战指南
c语言·开发语言
wangjialelele10 小时前
从磁盘查找理解 B 树 | B+树:原理、插入、分裂与性能分析
c语言·开发语言·数据结构·c++·b树
Tanecious.10 小时前
蓝桥杯备赛:Day1-P1101 单词方阵
c语言·c++·蓝桥杯
江玖_10 小时前
C语言从入门到放弃
c语言·开发语言
half~11 小时前
贵师大C语言备考
c语言·数据结构·算法
爱编码的小八嘎11 小时前
C语言完美演绎6-18
c语言