Content

给定一个 \(m\times n\) 的矩阵,求矩阵边缘元素之和。

数据范围:\(1\leqslant m,n\leqslant 100\)。

Solution

对于新手来说,看到这题就感觉我们以前用的一维数组是肯定不够的。没错,既然有一维数组肯定就有二维数组(甚至还有 \(\geqslant 3\) 维数组)。这篇题解首先向新手介绍一下二维数组和多维数组,如果对于这部分已经很熟悉了不妨跳过这个部分。

二维数组的定义方法即为 a[][],没错,就是在原来的一维数组上面多加上一对中括号。然后在每对中括号之间填上数字,就可以定义数组的大小,以此类推,\(n\) 维数组的定义方法即为数组名后面加上 \(n\) 对中括号,然后在每对中括号之间填上数字。但请注意:如果数组的大小太大,会造成计算机空间不足,会造成空间超限。这也就是评测状态中常见的一种:MLE。因此,请在定义数组的时候先计算数组的大小,以免造成不必要的空间超限。具体如何计算数组大小请自行上网搜索查看。

那么回到本题,我们如何判断矩阵中的某一个元素 \(a_{i,j}\) 是否是边缘元素?稍微分析一下不难发现,只要满足 \(i\geqslant 1\)、\(i\leqslant m\)、\(j\geqslant 1\)、\(j\leqslant n\) 四个条件中的一个,这个元素就是边缘元素。因此我们循环查找每一个元素,判断是否是边缘元素,是的话累加进答案即可。

但是,有没有不用二维数组,甚至不用数组就可以得到正确答案的方法呢?答案是肯定的。我们可以发现,我们可以一边读入,一边判断是否是边缘元素,是的话累加进答案。因此可以直接开一个变量读入 \(m\times n\) 次,然后直接同时判断累加进答案即可。

下面的代码仅给出用单个变量的方法。

Code

#include <cstdio>
using namespace std; int n, m;
long long ans; int main() {
scanf("%d%d", &n, &m);
F(int, i, 1, n) F(int, j, 1, m) {
int x; scanf("%d", &x);
if(i == 1 || j == 1 || i == n || j == m) ans += x;
}
printf("%lld", ans);
return 0;
}

LuoguB2101 计算矩阵边缘元素之和 题解的更多相关文章

  1. Openjudge计算概论-计算矩阵边缘元素之和

    /*======================================================================== 计算矩阵边缘元素之和 总时间限制: 1000ms ...

  2. POJ C程序设计进阶 编程题#1:计算矩阵边缘之和

    编程题#1:计算矩阵边缘元素之和 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB ...

  3. 【原创】开源Math.NET基础数学类库使用(15)C#计算矩阵行列式

                   本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 上个月 ...

  4. 开源Math.NET基础数学类库使用(15)C#计算矩阵行列式

    原文:[原创]开源Math.NET基础数学类库使用(15)C#计算矩阵行列式                本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p ...

  5. 【原创】开源Math.NET基础数学类库使用(16)C#计算矩阵秩

                   本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 上个月 ...

  6. 【原创】开源Math.NET基础数学类库使用(17)C#计算矩阵条件数

                   本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 上个月 ...

  7. 开源Math.NET基础数学类库使用(17)C#计算矩阵条件数

    原文:[原创]开源Math.NET基础数学类库使用(17)C#计算矩阵条件数                本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p ...

  8. 开源Math.NET基础数学类库使用(16)C#计算矩阵秩

    原文:[原创]开源Math.NET基础数学类库使用(16)C#计算矩阵秩                本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4 ...

  9. matlab计算矩阵每列非0元素个数

    在统计分析中,有时候需要计算矩阵每列非0元素的个数,可以用以下方法: 先用find找到每列不为0的元素index,然后用count计数. 假设有矩阵A[M,N], 结果存在countZeros cou ...

随机推荐

  1. 实用QPS和TPS高的高效分析方法

    现在主库的MySQL的QPS一直在3K/s左右,想知道其到底执行了那些SQL,或者是那些SQL执行的次数比较多: 腾讯云的后台监控: 开启腾讯云的SQL审计后,下载几分钟SQL日志文件, 下列语句在M ...

  2. 『与善仁』Appium基础 — 12、Appium的安装详解

    目录 (一)Appium server安装 方式一:(桌面方式:推荐) 1.Appium Desktop下载 2.Appium Desktop安装 3.Appium Desktop使用 方式二:(No ...

  3. CF1474E What Is It?

    考虑我们一定是每次构造最长的交换对. 那么就是\((1,n),(1,n - 1),...(1,\frac{n}{2} + 1)(\frac{n}{2},n)....(1,n)\)形式.

  4. [USACO07MAR]Face The Right Way G

    发现选定一个长度后,怎么翻转是固定的. 那我们直接选定一个长度去操作就行. 优化操作过程 类似于堆里打持久化标记一样的感觉. [USACO07MAR]Face The Right Way G // P ...

  5. 洛谷 P4183 - [USACO18JAN]Cow at Large P(点分治)

    洛谷题面传送门 点分治 hot tea. 首先考虑什么样的点能够对以 \(u\) 为根的答案产生 \(1\) 的贡献.我们考虑以 \(u\) 为根对整棵树进行一遍 DFS.那么对于一个点 \(v\), ...

  6. Linux 安装和使用 RAR工具

    RAR 安装 方法一.通过apt命令安装 rar 和 unrar 未安装 unrar 的情况下,提取 RAR 文件会报出"未能提取"错误 Ubuntu 安装 rar和 unrar( ...

  7. 【R绘图】当图例映射color/shape等多个属性时,如何修改图例标题?

    一般而言,我们修改ggplot2图例标题,常用以下三种方法: + guides(fill=guide_legend(title="New Legend Title")) + lab ...

  8. MYSQL5.8-----5

  9. halt

    halt命令用来关闭正在运行的Linux操作系统.halt命令会先检测系统的runlevel,若runlevel为0或6,则关闭系统,否则即调用shutdown来关闭系统. 语法 halt(选项) 选 ...

  10. 2019java面试

    1.面向对象的特征有哪些方面?答:面向对象的特征主要有以下几个方面:    抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注 ...