全MLE。
#include<bits/stdc++.h>
using namespace std;
int n,m,ans;
int mp[10][10];
int ne[8][2] = {{0,1},{1,0},{1,1},{-1,0},{0,-1},{-1,-1},{1,-1},{-1,1}};
bool v[10][10];
bool flag(int x,int y){
bool b = true;
if(v[x][y]) return false;
for(int i = 0 ; i < 8 ; i ++)
if(v[x + ne[i][0]][y + ne[i][1]] == 1) return false;
return true;
}
void dfs(int x,int y,int sum){
if(x == n && y == m){
ans = max(ans,sum);
return;
}
for(int i = 0 ; i < 8 ; i ++){
int xx = ne[i][0] + x;
int yy = ne[i][1] + y;
if(flag(xx,yy) && xx >= 1 && xx <= n && yy >= 1 && yy <= m){
dfs(xx,yy,sum + mp[xx][yy]);
}
}
}
int main(){
int t;
cin >> t;
while(t --){
ans = 0;
memset(v,0,sizeof(v));
cin >> n >> m;
for(int i = 1 ; i <= n ; i ++)
for(int j = 1 ; j <= m ; j ++)
cin >> mp[i][j];
dfs(1,1,0);
cout << ans << '\n';
}
return 0;
}