代码如下:
#include"bits/stdc++.h"
using namespace std;
int ans=-1;
int xa,ya;
int a[7][7];
bool b[7][7];
void dfs(int x,int y,int aans)
{
if ((b[x-1][y-1])&&(b[x][y-1])&&(b[x+1][y-1])&&(b[x][y-1])&&(b[x][y+1])&&(b[x+1][y-1])&&(b[x+1][y])&&(b[x+1][y+1])&&(b[x][y]))
{
aans+=a[x][y];
b[x][y]=false;
for (int i=1;i<=xa;i++)
{
for (int o=1;o<=ya;o++)
{
if (b[i][o])
{
dfs(i,o,aans);
}
}
}
}
if (aans>ans)
{
ans=aans;
}
}
int main()
{
int t;
scanf("%d",&t);
for (int i=1;i<=t;i++)
{
ans=-1;
scanf("%d%d",&xa,&ya);
for (int j=0;j<=7;j++)
{
for (int k=0;k<=7;k++)
{
a[j][k]=0;
b[j][k]=true;
}
}
for (int c=1;c<=xa;c++)
{
for (int d=1;d<=ya;d++)
{
scanf("%d",&a[c][d]);
}
}
dfs(1,1,0);
printf("%d",ans);
printf("\r\n");
}
}