16pts,求助
查看原帖
16pts,求助
1004142
jinhangdong楼主2023/10/29 07:36
#include<bits/stdc++.h>
using namespace std;
int a[101][101],q[101][101],i,j,n,m,p,t;
int dx[8]={1,0,-1,0,1,-1,1,-1};
int dy[8]={0,1,0,-1,1,-1,-1,1};
void dfs(int x,int y,int s)
{
	int xx,yy;
	if(x==n+1) return;
	if(y==m) xx=x+1,yy=1;
	else xx=x,yy=y+1;
	if(s>t) t=s;
	dfs(xx,yy,s);
	int f=0;
	for(int i=0;i<8;++i)
	if(q[x+dx[i]][y+dy[i]])
	{
		f=1;
		break;
	}
	if(!f)
	{
		q[x][y]=1;
		dfs(xx,yy,s+a[x][y]);
		q[x][y]=0;
	}
}
int main()
{
	cin>>p;
	while(p--)
	{
		t=0;
		memset(q,0,sizeof(q));
		cin>>n>>m;
		for(i=1;i<=n;++i)
		for(j=1;j<=m;++j) cin>>a[i][j];
		dfs(1,1,0);
		cout<<t<<endl;
	}
	return 0;
}
2023/10/29 07:36
加载中...