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. PaintHouse I

    ColorCostDP.hpp // // Created by Administrator on 2021/7/21. // #ifndef C__TEST01_COLORCOSTDP_HPP #d ...

  2. 使用idea创建Kotlin项目

    1.打开idea 2.选择项目方式: 3.nest 4.创建文件名 4.finish 看这目录结构和java没什么区别 5.在src目录下新建一个Kotlin文件 fun main(args:} fu ...

  3. Sentry 监控 - Snuba 数据中台架构(SnQL 查询语言简介)

    本文描述了 Snuba 查询语言 (SnQL). 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒 ...

  4. [ARC098B] Xor Sum 2

    关于异或运算和代数和运算有很不错的性质: \(xor_{i = 1} ^ {n}a_i \leq \sum_{i = 1} ^ n a_i\) 所以我们考虑一段区间按题目来说是合法的,即 \(xor_ ...

  5. pycurl报错: ImportError: pycurl: libcurl link-time ssl backend (openssl) is different from compile-time ssl backend

    报错: ImportError: pycurl: libcurl link-time ssl backend (openssl) is different from compile-time ssl ...

  6. [Linux] Miniconda安装及其使用

    集群环境下安装conda进行软件管理.Miniconda是Anaconda的简化版,对于一般需求而言就够用了.因此,我这里安装Minconda3进行软件安装管理. 安装 Miniconda下载地址,版 ...

  7. 【转】NG:垂枝桦基因组图谱构建(2+3组装)及重测序分析

    转自希望组公众号.学习二代+三代组装策略的流程 垂枝桦(Betula pendula)是一种速生乔木,能在短短一年时间内开花,木质坚实,可做细工.家具等,经济价值极高.近日,芬兰研究人员对垂枝桦自交系 ...

  8. 年底巩固下 CS 知识「GitHub 热点速览 v.21.49」

    作者:HelloGitHub-小鱼干 期末到了!是时候来一波 CS 复习资料了,从本科基础知识开始到实用编程技术.本周 GitHub 热点趋势榜给你提供了最全的复习资料:清华的 CS 四年学习资料.W ...

  9. 学习java 7.8

    学习内容: 被static修饰的不需要创建对象,直接用类名引用即可 内部类访问特点:内部类可以直接访问外部类的成员,包括私有 外部类访问内部类的成员,必须创建对象 成员内部类,内部类为私有,Outer ...

  10. SparkStreaming消费Kafka,手动维护Offset到Mysql

    目录 说明 整体逻辑 offset建表语句 代码实现 说明 当前处理只实现手动维护offset到mysql,只能保证数据不丢失,可能会重复 要想实现精准一次性,还需要将数据提交和offset提交维护在 ...