仅供学习参考,如有不足之处请予指正。
问题描述
输入一个整数矩阵,计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。
输入格式
第一行分别为矩阵的行数m和列数n(m < 100,n < 100),两者之间以一个空格分开。
接下来输入的m行数据中,每行包含n个整数,整数之间以一个空格分开。
输出格式
输出对应矩阵的边缘元素和。
样例输入
3 3 3 4 1 3 7 1 2 0 1
样例输出
15
问题分析
矩阵的边缘:行为0、行为总行数-1、列为0、列为总列数-1的位置
其他例子:
5 5
1 2 4 5 1
2 1 0 4 2
0 1 3 4 5
4 2 1 2 3
1 0 2 3 1
矩阵的边缘:(0, 0) (0, 1) (0, 2) (0, 3) (0, 4)
(1, 0) (1, 4)
(2, 0) (2, 4)
(3, 0) (3, 4)
(4, 0) (4, 1) (4, 2) (4, 3) (4, 4)
按行或者行列遍历找矩阵边缘的数相加都可
代码展示
#include <iostream>
using namespace std;
const int N = 100;//静态变量
int main()
{
int m, n, a[N][N], sum = 0;
cin >> m >> n;
if (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) || j == 0 || j == (n - 1)) {
sum += a[i][j];
}
}
}
cout << sum << endl;
}
return 0;
}