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 ...
随机推荐
- Hibernate数据校验简介
我们在业务中经常会遇到参数校验问题,比如前端参数校验.Kafka消息参数校验等,如果业务逻辑比较复杂,各种实体比较多的时候,我们通过代码对这些数据一一校验,会出现大量的重复代码以及和主要业务无关的逻辑 ...
- 最小生成树(MST)详解+题目
原因 回顾一下旧知识 概况 在一给定的无向图G = (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边(即),而 w(u, v) 代表此边的权重,若存在 T 为 E 的子集(即)且为无 ...
- CF1444C Team-Building
考虑我们判定二分图染色的经典算法: 染色. 我们把所有不同颜色块之间的边都保存下来. 只在图中保留相同颜块之间的边,并对其染色. 我们考虑记\(g_i\)为一个点的所在联通块编号,\(f_i\)为他在 ...
- CF1208H Red Blue Tree
CF1208H Red Blue Tree 原本应该放在这里但是这题过于毒瘤..单独开了篇blog 首先考虑如果 $ k $ 无限小,那么显然整个树都是蓝色的.随着 $ k $ 逐渐增大,每个点都会有 ...
- 动态生成多个选择项【c#】
<asp:CheckBoxList ID="cbxLabelList" runat="server" RepeatColumns="10&quo ...
- C语言中的除法的计算
不用除号,计算除法运算.思路是使用减法运算!思路1:循环采用减法每次减去n,直到做完减法之后结果小于0为止 但是这样次数较大 如求100/3,需要次数为34次. 思路2:循环采用减法每次减去k,K的 ...
- pyqt5的下拉菜单,可以进行输入文字
- Ibatis中SqlMapClientTemplate和SqlMapClient的区别
SqlMapClientTemplate是org.springframework.orm.ibatis下的 而SqlMapClient是ibatis的 SqlMapClientTemplate是Sql ...
- jenkins之授权和权限管理
#:创建角色,给角色授权,然后创建用户,将用户加入到角色(前提先安装插件) #:先将之前的卸载掉 #:然后重启服务,在可选插件搜索Role #:装完重启服务 root@ubuntu:~# system ...
- JQuery 和 CSS 等选择器:
JQuery 选择器: CSS 选择器: