```cpp
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
int t,n,m,a[10][10],vis[10][10],ans,dx[]={1,-1,0,0,1,-1,-1,1},dy[]={0,0,1,-1,1,-1,1,-1},mx=-1;
void dfs(int x,int y){
if(y==m+1){
x++;
y=1;
}
if(x==n+1){
mx=max(mx,ans);
return;
}
int xx=0,yy=0;
if(!vis[x][y] && x>=1 && x<=n && y>=1 && y<=m){
ans+=a[x][y];
vis[x][y]=1;
for(int i=0;i<8;i++){
xx=x+dx[i],yy=y+dy[i];
vis[xx][yy]++;//把=1改成++
}
dfs(x,y+1);
vis[x][y]=0;
for(int i=0;i<8;i++){
xx=x+dx[i],yy=y+dy[i];
vis[xx][yy]--;//把=0改成--
}
ans-=a[x][y];}
dfs(x,y+1);
}
int main(){
cin>>t;
while(t--){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
dfs(1,1);
cout<<mx<<endl;
memset(a,0,sizeof(a));
memset(vis,0,sizeof(vis));
ans=0;
mx=-1;
}
return 0;
}
```
@[Alven1234](/user/653295)
by zqhbxsgs @ 2024-02-15 10:53:54
这题WA了一上午%%%orzorzorz
by Alven1234 @ 2024-02-17 08:43:42