错误代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int m,n,s[102][102] = {};
long long sum = 0;
scanf("%d %d",&m,&n);
for(int i = 1;i <= m;++ i){
for(int j = 1;j <= n;++ j){
scanf("%d",&s[i][j]);
}
}
for(int i = 1;i <= m;++ i){
sum += s[i][1];
}
if(m != 1 && n != 1){
for(int i = 1;i <= m;++ i){
sum += s[i][n];
}
}
for(int i = 2;i < n;++ i){
sum += s[1][i];
}
if(n != 1 && m != 1){
for(int i = 2;i < n;++ i){
sum += s[m][i];
}
}
printf("%lld",sum);
return 0;
}
很弱智的一道题,我一开始想的是让它把边缘扫一遍,但限制条件没加好的话很容易误扫,所以还是遍历检测边缘好些
#include<bits/stdc++.h>
using namespace std;
int main()
{
int m,n,s[102][102] = {};
long long sum = 0;
scanf("%d %d",&m,&n);
for(int i = 1;i <= m;++ i){
for(int j = 1;j <= n;++ j){
scanf("%d",&s[i][j]);
}
}
for(int i = 1;i <= m;++ i){
for(int j = 1;j <= n;++ j){
if(i == 1 || i == m || j == 1 || j == n){
sum += s[i][j];
}
}
}
printf("%lld",sum);
return 0;
}