求助
查看原帖
求助
1365062
Deric456楼主2025/7/28 10:02
#include<bits/stdc++.h>
#define endl '\n'
#define int long long
const int N = 2e3 + 10;
using namespace std;
int dx[9]={1,1,1,-1,-1,-1,0,0,0};
int dy[9]={1,-1,0,-1,1,0,1,-1,0};
int ans=0;
int n,m;
int st[N][N],a[N][N];
void dfs(int x,int y,int z){

	ans=max(ans,z);

	if(x>n||y>m){
		return;
	}
	if(st[x][y]==0){
		for(int i=0;i<9;i++) st[x+dx[i]][y+dy[i]]++;
		dfs(x+1,y,z+a[x][y]);
		dfs(x,y+1,z+a[x][y]);
		for(int i=0;i<9;i++) st[x+dx[i]][y+dy[i]]--;
	}
	dfs(x+1,y,z);
	dfs(x,y+1,z);
}

void solve() {
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
		}
	}
	dfs(1,1,0);
	cout<<ans<<endl;
	ans=0;
}

signed main(){
	int t = 1;
	cin >> t;
	while (t--) solve();
	return 0;
}

哪里出问题了?(蒟蒻求助QAQ)

2025/7/28 10:02
加载中...