牛客网刷题 ——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;
}
相关推荐
小莞尔3 天前
【51单片机】【protues仿真】基于51单片机的篮球计时计分器系统
c语言·stm32·单片机·嵌入式硬件·51单片机
小莞尔3 天前
【51单片机】【protues仿真】 基于51单片机八路抢答器系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
liujing102329293 天前
Day03_刷题niuke20250915
c语言
第七序章3 天前
【C++STL】list的详细用法和底层实现
c语言·c++·自然语言处理·list
l1t3 天前
利用DeepSeek实现服务器客户端模式的DuckDB原型
服务器·c语言·数据库·人工智能·postgresql·协议·duckdb
l1t3 天前
利用美团龙猫用libxml2编写XML转CSV文件C程序
xml·c语言·libxml2·解析器
Gu_shiwww4 天前
数据结构8——双向链表
c语言·数据结构·python·链表·小白初步
你怎么知道我是队长4 天前
C语言---循环结构
c语言·开发语言·算法
程序猿编码4 天前
基于 Linux 内核模块的字符设备 FIFO 驱动设计与实现解析(C/C++代码实现)
linux·c语言·c++·内核模块·fifo·字符设备
mark-puls4 天前
C语言打印爱心
c语言·开发语言·算法