读入矩阵时按行列边界判断,累加所有边缘元素且不重复计数。
OJ: noi_openjudge
题目 ID: ch0108-03
难度:入门
标签:矩阵模拟python
日期: 2026-07-30 23:01
题意
计算整数矩阵第一行、最后一行、第一列和最后一列元素之和。
思路
读取每个元素时判断其行或列是否位于边界。使用一个 or 条件,四个角也只会被累加一次。
代码
cpp
#include <cstdio>
int m,n;
int map[200][200];
int main(){
int i,j,sum=0;
scanf("%d%d",&m,&n);
for (i=1;i<=m;i++){
for (j=1;j<=n;j++){
scanf("%d",&map[i][j]);
if( i == 1 || j == 1 || i == m || j==n){
sum += map[i][j];
}
}
}
printf("%d\n",sum);
return 0;
}复杂度
总结
Python代码
python
row_count, column_count = map(int, input().split())
total = 0
for row in range(row_count):
values = list(map(int, input().split()))
for column, value in enumerate(values):
if row in (0, row_count - 1) or column in (0, column_count - 1):
total += value
print(total)C++代码
cpp
#include <cstdio>
int m,n;
int map[200][200];
int main(){
int i,j,sum=0;
scanf("%d%d",&m,&n);
for (i=1;i<=m;i++){
for (j=1;j<=n;j++){
scanf("%d",&map[i][j]);
if( i == 1 || j == 1 || i == m || j==n){
sum += map[i][j];
}
}
}
printf("%d\n",sum);
return 0;
}复杂度
时间复杂度为
总结
矩阵边界判断可以在读取阶段完成,无需保存整张矩阵。