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. CKAD认证中的部署教程

    在上一章中,我们已经学会了使用 kubeadm 创建集群和加入新的节点,在本章中,将按照 CKAD 课程的方法重新部署一遍,实际上官方教程的内容不多,笔者写了两篇类似的部署方式,如果已经部署了 kub ...

  2. jpa生成uuid

    使用jpa可以生成uuid,但是我直接添加数据没有id值会报错,只在程序中有效,如果直接修改数据库需要手动填写,另外长度不要乱填 ,之前填了200,找了半天才找到原因. package com.jav ...

  3. [R] 如何快速生成许多差异明显的颜色?

    这个需求真的太常见了!注意问题强调的几个关键词:一是快速,二是大量,三是差异明显.在生成大量元素比较图时要明显区分不同样本,比如宏基因组中的物种分析: 方法一:自定义 自定义颜色:优点是选择差异明显的 ...

  4. Go 命令类型和未命名类型

    Go 命令类型和未命名类型 例子 package main import "fmt" // 使用type声明的是命令类型 // type new_type old_type typ ...

  5. 【1】蛋白鉴定软件之X!Tandem

    目录 1. 简介 2.下载安装 3. 软件试用 4. 结果 5. FAQ 1. 简介 X!Tandem是GPM:The Global Proteome Machine(主要基于Web的开源用户界面,用 ...

  6. 64-Unique Binary Search Trees

    96. Unique Binary Search Trees My Submissions Question Editorial Solution Total Accepted: 82788 Tota ...

  7. Scrapy-Redis的安装和使用

    Scrapy-Redis是Scrapy的分布式扩展模块,有了它,我们就可以方便地实现Scrapy分布式爬虫的搭建.GitHub:https://github.com/rmax/scrapy-redis ...

  8. 通过yum安装 memcache

    . 通过yum安装 复制代码代码如下: yum -y install memcached#安装完成后执行:memcached -h#出现memcached帮助信息说明安装成功 2. 加入启动服务 复制 ...

  9. 从零开始学习oracle

    引用博客:https://blog.csdn.net/qq_36998053/article/details/82725765 )Oracle之<环境配置> (二)Oracle之<基 ...

  10. Apache RocketMQ分布式消息传递和流数据平台及大厂面试宝典v4.9.2

    概述 **本人博客网站 **IT小神 www.itxiaoshen.com 定义 Apache RocketMQ官网地址 https://rocketmq.apache.org/ Latest rel ...