入门赛F题最后两点wa求助
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e3+5;
int n;
int a[N][N];
int dx[]={0,0,1,-1,-1,-1,1,1};
int dy[]={1,-1,0,0,1,-1,-1,1};
int dfs(int x,int y,int z)
{
int fx=x+dx[z];
int fy=y+dy[z];
if(fx<1||fx>n||fy<1||fy>n) return a[x][y];
return dfs(fx,fy,z)+a[x][y];
}
signed main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++) cin>>a[i][j];
}
int ans=LONG_LONG_MIN;
for(int i=1;i<=n;i++) for(int k=0;k<4;k++) ans=max(ans,dfs(1,i,k));
for(int i=1;i<=n;i++) for(int k=0;k<4;k++) ans=max(ans,dfs(i,1,k));
for(int i=1;i<=n;i++) ans=max(ans,dfs(1,i,7));
for(int i=1;i<=n;i++) ans=max(ans,dfs(i,1,7));
for(int i=1;i<=n;i++) ans=max(ans,dfs(n,i,6));
for(int i=1;i<=n;i++) ans=max(ans,dfs(i,n,6));
cout<<ans;
return 0;
}