经典错误:二维数组与实际矩阵的差异所构成的易错点

本文探讨了二维数组和矩阵之间的差异,强调在编程处理时的易错点,通过实例解释了如何处理二维数组,特别是涉及数组索引时的边界问题。此外,还介绍了一道关于加密消息恢复的题目,分析了解题关键和常见错误。
摘要由CSDN通过智能技术生成

经典错误:二维数组与实际矩阵的差异所构成的易错点

标签:C语言 二维数组 矩阵

by 小威威


1.矩阵与二维数组的差异

在线性代数的课程中,我们接触到了矩阵这一工具,不难发现它很类似于C语言中的二维数组。虽然我们在C语言中可以用二维数组表示矩阵,但是二者的微小差异仍需要我们注意,否则有可能会导致错误。那么,它们两者有何差异呢?

很明显,由于数组的性质,二维数组有“0”行、“0”列,而矩阵没有。
即矩阵的第一行相当于二维数组的“0”行,矩阵的第一列相当于二维数组的“0”列。

那么,这一差异会带来什么错误呢?下面我用实例介绍。

2.实例

军团再临

燃烧军团即将再次降临艾泽拉斯。萨尔为了改变对抗燃烧军团,使用地震法术,把一处平原改造成了山丘。之后,萨尔需要绘制出新的地图。

平原可以看做一个N*M的棋盘(国际象棋那种)初始海拔为0。每次,萨尔将一个矩阵的海拔全部提高1 。这一个矩阵可以用左上角(sx,sx)和右下角(tx,ty)表示,也即第sx行第sy列的方格到第tx行第ty列的方格这样的一个矩形区域。绘制地图前,萨尔想知道最高的山峰 海拔是多少。使用完地震法术后,萨尔实在太累了,因此他把这个任务交给了你—他最聪明的朋友。

给出平原大小N,M(N行M列,行列都从1开始计算,也即第一行到第N行,第一列到第M列)K 使用地震的次数。N,M,K不超过500

问最高的山峰海拔是多少。

样例输入:

10 10 3
1 1 3 3
3 3 5 5
3 3 10 10

样例输出

3

我的代码:

# include <stdio.h>
int main(void) {
    int a[500][500] = {
  0};  // 将二维数组内全部元素赋0
    int N, M, K, max;  // N指行,M指列,K指地震次数,max表示最高海拔
    int b[500], c[500], d[500], e[500];  // 构造数组,用于存储坐标(不一定要构造数组)
    scanf("%d%d%d", &N, &M, &K);
    for (int i = 0; i < K; i++)   //  该for循环将坐标值存储到数组中
        scanf("%d%d%d%d", &b[i], &c[i], &d[i], &e[i
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值