小韦老师@神犇营-my0226-计算矩阵边缘元素之和
题目:
描述
输入一个整数矩阵,计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。
输入
第一行分别为矩阵的行数 m 和列数 n(m<100,n<100),两者之间以一个空格分开。
接下来输入的 m 行数据中,每行包含 n 个整数(每个整数大于等于 0,小于等于 100),整数之间以一个空格分开。
输出
输出对应矩阵的边缘元素和。
输入样例1
3 3
3 4 1
3 7 1
2 0 1
输出样例1
15
思路:
整体思路:
把第一行,最后一行,第一列,最后一列的元素都加起来即可。
具体步骤:
1.定义一个二维数组,用来存储矩阵:
const int N = 110;
int a[N][N];
2.定义两个变量 n 和 m,代表矩阵的行数和列数,并将 n 和 m 输入。
3.输入矩阵。
4.定义一个累加器 sum,用来存储当前累加的结果,并初始化为 0。
4.把第 1 行的元素加起来:
for (int i = 0; i < m; i++) { // 第 1 行,枚举列
sum += a[0][i]; // 累加到累加器中
}
5.把第 n 行的元素加起来:
for (int i = 1; i <= m; i++) { // 第 n 行,枚举列
sum += a[n][i]; // 累加到累加器中
}
6.把第 1 列的元素加起来:
// 第 1 列,枚举行,第 1 行和第 n 的元素已经被加到行和中,不能重复计算
for (int i = 2; i < n; i++) {
sum += a[i][1]; // 累加到累加器中
}
7.把第 m 列的元素加起来:
// 第 m 列,枚举行,第 1 行和第 n 的元素已经被加到行和中,不能重复计算
for (int i = 2; i < n; i++) {
sum += a[i][m]; // 累加到累加器中
}
8.输出累加器。
完整代码:
#include <bits/stdc++.h>
using namespace std;
const int N = 110;
int a[N][N];
int main() {
int n, m; // 行数和列数
cin >> n >> m;
// 输入矩阵
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> a[i][j];
}
}
int sum = 0; // 累加器,用来存储当前累加的结果
for (int i = 1; i <= m; i++) { // 第 1 行,枚举列
sum += a[1][i]; // 累加到累加器中
}
for (int i = 1; i <= m; i++) { // 第 n 行,枚举列
sum += a[n][i]; // 累加到累加器中
}
// 第 1 列,枚举行,第 1 行和第 n 的元素已经被加到行和中,不能重复计算
for (int i = 2; i < n; i++) {
sum += a[i][1]; // 累加到累加器中
}
// 第 m 列,枚举行,第 1 行和第 n 的元素已经被加到行和中,不能重复计算
for (int i = 2; i < n; i++) {
sum += a[i][m]; // 累加到累加器中
}
cout << sum; // 输出累加器
return 0;
}