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

server/2025/1/14 4:56:59/

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. 代码实现

//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");}elseprintf("Yes\n");return 0;
}

在这里插入图片描述

4. 代码实现2

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

#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");} elseprintf("Yes\n");return 0;
}

5. 代码实现3

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

#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");} elseprintf("Yes\n");return 0;
}

6. 代码实现4

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

#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");} elseprintf("Yes\n");return 0;
}

http://www.ppmy.cn/server/158185.html

相关文章

25/1/12 嵌入式笔记 学习esp32

了解了一下位选线和段选线的知识&#xff1a; 位选线&#xff1a; 作用&#xff1a;用于选择数码管的某一位&#xff0c;例如4位数码管的第1位&#xff0c;第2位&#xff09; 通过控制位选线的电平&#xff08;高低电平&#xff09;&#xff0c;决定当前哪一位数码管处于激活状…

二、BIO、NIO编程与直接内存、零拷贝

一、网络通信 1、什么是socket&#xff1f; Socket 是应用层与 TCP/IP 协议族通信的中间软件抽象层&#xff0c;它是一组接口&#xff0c;一般由操作 系统提供。客户端连接上一个服务端&#xff0c;就会在客户端中产生一个 socket 接口实例&#xff0c;服务端每接受 一个客户端…

An FPGA-based SoC System——RISC-V On PYNQ项目复现

本文参考&#xff1a; &#x1f449; 1️⃣ 原始工程 &#x1f449; 2️⃣ 原始工程复现教程 &#x1f449; 3️⃣ RISCV工具链安装教程 1.准备工作 &#x1f447;下面以LOCATION代表本地源存储库的安装目录&#xff0c;以home/xilinx代表在PYNQ-Z2开发板上的目录 ❗ 下载Vivad…

Lua语言的软件工程

Lua语言的软件工程 引言 在软件工程领域&#xff0c;编程语言的选择对项目的成功与否有着至关重要的影响。Lua语言作为一种轻量级、高效、可扩展的脚本语言&#xff0c;近年来在游戏开发、嵌入式系统以及其他高性能应用程序中得到了广泛应用。本文将深入探讨Lua语言的特点、优…

C语言基本知识复习浓缩版:数组

所谓数组&#xff08;Array&#xff09;&#xff0c;就是一系列数据的集合。这些数据具有相同的类型&#xff0c;并且在内存中挨着存放&#xff0c;彼此之间没有缝隙。换句话说&#xff0c;数组用来存放多份数据&#xff0c;但是它有两个要求&#xff1a; 这些数据的类型必须相…

Linux物理地址到虚拟地址的映射

相关理论&#xff1a; Linux中用户空间是无法直操作寄存器的&#xff0c;需要先将寄存器对应的物理地址通过转换成虚拟地址然后在进行操作。 高性能处理器一般会提供一个内存管理单元&#xff08;MMU&#xff09;,该单元辅助操作系统进行内存管理&#xff0c;提供虚拟地址和物理…

网工考试——数据链路层、网络层、传输层

1、纠错和检错 基本概念&#xff1a;一个帧包含m个数据位&#xff08;报文&#xff09;和r个冗余位&#xff08;校验位&#xff09;&#xff0c;假设帧的总长度为n&#xff0c;则有nmr&#xff0c;包含数据和校验位的n位单元通常称为n位码字 海明码距&#xff1a;是两个码字中…

区块链-不可篡改

为什么区块链是不可纂改&#xff1f; 密码学哈希函数&#xff1a;每个区块都包含一个唯一的哈希值&#xff0c;这个哈希值是根据该区块内的所有交易数据以及其他信息&#xff08;如前一个区块的哈希值&#xff09;计算出来的。如果区块内的任何信息被更改&#xff0c;即使只是一…