牛客网刷题 ——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;
}
相关推荐
左手の明天7 小时前
SLIP 协议封装与解析详解:原理、C 代码与实战案例
linux·c语言·开发语言·c++
小灰灰搞电子9 小时前
C语言 <ctype.h> 头文件详解
c语言·ctype.h
阿钱真强道9 小时前
17 嵌入式操作系统 | uloop 事件循环:TCP 客户端
c语言·tcp/ip·tcp·事件循环·uloop
会员果汁11 小时前
函数调用和变长参数
c语言
白山编程大哥14 小时前
Lua 中使用 C 语言的用户自定义类型——userdata
c语言·junit·lua
无敌贵点大王15 小时前
RTThread学习记录13——关于要使用一个外设,RTThread与cubemx到底要怎么配合?
c语言·stm32·学习·rtthread
phltxy15 小时前
C 语言动态内存管理:从申请空间到安全释放
c语言·开发语言·ui
上位机妹子16 小时前
C 语言 数组删除指定元素(快慢指针法)
c语言·数据结构·算法
心中有你021416 小时前
【路径规划】A*寻路算法最通俗易懂讲解(C语言完整实现+详细注释)
c语言·开发语言·算法
大圣编蚕16 小时前
C语言入门:基本语法汇总
c语言·开发语言