题目来源
题目来源:计算矩阵边缘元素之和 - 洛谷
题目描述
输入一个整数矩阵,计算位于矩阵边缘的元素之和。
所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。
输入格式
第 1 行包含两个整数,分别为行数 m 和列数 n,两个整数之间空格隔开。
第 2 行开始有 m 行数据,每行包含 n 个整数,整数之间空格隔开。
输出格式
对应矩阵的边缘元素和。
思路
原来我打算用小学数学的方式解题
#include<iostream>
using namespace std;
int main(){
int m,n,b=0;
cin>>m>>n;
int a[101][101];//定义二维数组
for(int i=0;i<m;i++){//输入
for(int j=0;j<n;j++){
cin>>a[j][i];
}
}
for(int i=0;i<m;i++){//算第一列
b+=a[0][i];
}
for(int i=0;i<m;i++){//算最后一列
b+=a[n-1][i];
}
for(int i=1;i<n-1;i++){//算第一行去首尾
b+=a[i][0];
}
if(m!=1){
for(int i=1;i<n-1;i++){//算最后一行去首尾
b+=a[i][m-1];
}
}
cout<<b<<endl;
return 0;//良好习惯
}
停!!!
不要急着复制
压根就不对
问题是那一个测试点咋错的
哪方面我没想到
在计算了七七八十一分钟后
决定
··· ···看题解
参考题解:题解
于是我懂了!!!!!!
#include<iostream>
using namespace std;
int main(){
int m,n;
cin>>m>>n;
int t,num;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
cin>>t;
if((i==0||i==m-1)||(j==0||j==n-1)){
num+=t;
}
}
}
cout<<num<<endl;
return 0;
}