#include<bits/stdc++.h>
using namespace std;
int a[101][101];
int main()
{
int m,n,ans=0;
cin>>m>>n;
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++)
{
ans+=a[1][i]+a[m][i];
}
for(int i=2;i<m;i++)
{
ans+=a[i][1]+a[i][n];
}
cout<<ans;
return 0;
}
这段代码只能得 80 分,但是样例通过了,仔细看一下代码,你或许觉得这段代码应该能 AC,#3 测试点是 WA 的,或许就是 #3 是有问题的测试数据。
无论如何,千万要注意第 19 行代码:
for(int i=2;i<m;i++)
这段代码并没有错,因为如果是
for(int i=1;i<=m;i++)
的话,那么 a[1][1] 和 a[1][n] 会被重复计算。
以 m=3 且 n=3 为例,那么 15 ~ 22 行代码将会计入 a[1][1]、a[1][2]、a[1][3]、a[2][1]、a[2][3]、a[3][1]、a[3][2] 以及 a[3][3],这些都是矩阵的边缘元素。
如果发现这段代码的问题或者 #3 测试数据的问题,欢迎在下面回复!