目录
一,问题
描述
输入一个整数矩阵,计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。
输入描述
第一行分别为矩阵的行数m和列数n(m<100,n<100),两者之间以一个空格分开。
接下来输入的m行数据中,每行包含n个整数,整数之间以一个空格分开。
输出描述
输出对应矩阵的边缘元素和。
用例输入 1
3 3
3 4 1
3 7 1
2 0 1
用例输出 1
15
二,思路
- 因为题目有给出m和n最大可以取到的值:m=n=99 (m<100,n<100),表示二维数组每行每列都会有99-0+1=100个元素,所以需要定义一个100行100列的二维数组来存储这些元素。
- 接着就需要给数组中的每个元素赋值,在赋值的过程中就可以让存储求和结果的变量s加上矩阵边缘的元素 需要注意的是,参与了一次运算的元素不会再做第二次运算,如下图👇
三,代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
int m,n,a[100][100],s=0;
cin>>m>>n;
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
cin>>a[i][j];
if(i==0 | i==m-1) s+=a[i][j];
else{
if(j==0 | j==n-1) s+=a[i][j];
}
}
}
cout<<s;
return 0;
}
代码长度可以进一步缩短:
else{
if(j==0 | j==n-1) s+=a[i][j];
}
上面👆的代码块可以修改成下面👇的else if语句
else if(j==0 | j==n-1) s+=a[i][j];
有问题请在评论区留言或者是私信我,回复时间不超过一天。