求问入门赛
  • 板块学术版
  • 楼主ACtheQ
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/5/17 21:59
  • 上次更新2024/5/18 09:22:16
查看原帖
求问入门赛
755689
ACtheQ楼主2024/5/17 21:59

入门赛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;
}
2024/5/17 21:59
加载中...