LuoguB2101 计算矩阵边缘元素之和 题解
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 计算矩阵边缘元素之和 题解的更多相关文章
- Openjudge计算概论-计算矩阵边缘元素之和
/*======================================================================== 计算矩阵边缘元素之和 总时间限制: 1000ms ...
- POJ C程序设计进阶 编程题#1:计算矩阵边缘之和
编程题#1:计算矩阵边缘元素之和 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB ...
- 【原创】开源Math.NET基础数学类库使用(15)C#计算矩阵行列式
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 上个月 ...
- 开源Math.NET基础数学类库使用(15)C#计算矩阵行列式
原文:[原创]开源Math.NET基础数学类库使用(15)C#计算矩阵行列式 本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p ...
- 【原创】开源Math.NET基础数学类库使用(16)C#计算矩阵秩
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 上个月 ...
- 【原创】开源Math.NET基础数学类库使用(17)C#计算矩阵条件数
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 上个月 ...
- 开源Math.NET基础数学类库使用(17)C#计算矩阵条件数
原文:[原创]开源Math.NET基础数学类库使用(17)C#计算矩阵条件数 本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p ...
- 开源Math.NET基础数学类库使用(16)C#计算矩阵秩
原文:[原创]开源Math.NET基础数学类库使用(16)C#计算矩阵秩 本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4 ...
- matlab计算矩阵每列非0元素个数
在统计分析中,有时候需要计算矩阵每列非0元素的个数,可以用以下方法: 先用find找到每列不为0的元素index,然后用count计数. 假设有矩阵A[M,N], 结果存在countZeros cou ...
随机推荐
- 洛谷 P4887 -【模板】莫队二次离线(第十四分块(前体))(莫队二次离线)
题面传送门 莫队二次离线 mol ban tea,大概是这道题让我第一次听说有这东西? 首先看到这类数数对的问题可以考虑莫队,记 \(S\) 为二进制下有 \(k\) 个 \(1\) 的数集,我们实时 ...
- 如何使用scp在Linux服务器的后台传输文件?
目录 一.上传 常规操作 建议 后台运行 二.下载 两台服务器间文件如何传输?对于小文件,可以先从Linux服务器传到window,再传到另一台服务器.对于大的文件,如测序数据.比对文件等.这样的方法 ...
- 【豆科基因组】普通豆/菜豆/四季豆Common bean (Phaseolus vulgaris L.) 683个自然群体重测序2020NG
目录 一.来源 二.结果 683份材料重测序 地方种landraces和育种品系breeding lines的多样性 表型和基因-环境互作(G by E) 菜豆产量潜力相关的MTAs(显著关联位点) ...
- Linux—yum的python版本错误——初级解决方案
为了安装rrdtool,发现不是少这个就是少那个,最后发现yum也不能用. 从网上找的解决yum问题. 转自:http://doarthon.blog.51cto.com/3175384/728809 ...
- Mysql笔记(3)
查询总数count(1)查询总和sum(数据名) 查询最大值max(数据名) 查询最小值min(数据名) 查询平均值avg(数据名) 去除重复 通过having来过滤group by字句的结果信息 i ...
- Linux FTP的主动模式与被动模式
Linux FTP的主动模式与被动模式 一.FTP主被动模式 FTP是文件传输协议的简称,ftp传输协议有着众多的优点所以传输文件时使用ftp协议的软件很多,ftp协议使用的端口是21( ...
- Docker学习(三)——Docker镜像使用
Docker镜像使用 当运行容器时,使用的镜像如果在本地中不存在,docker就会自动从docker镜像仓库中下载,默认是从Docker Hub公共镜像源下载. 1.镜像使用 (1)列 ...
- node环境变量配置
1.Node.js 官方网站下载:https://nodejs.org/en/ 2.打开安装,傻瓜式下一步即可,然后配置环境变量 3.因为在执行例如npm install webpack -g等命令全 ...
- ORACLE 获取执行计划的方法
一.获取执行计划的6种方法(详细步骤已经在每个例子的开头注释部分说明了): 1. explain plan for获取: 2. set autotrace on : 3. statistics_lev ...
- hadoop Sort排序
1 public int getPartition(IntWritable key,IntWritable value,int numPartitions){ 2 int Maxnumber = 12 ...