题目链接
我也是参考了一下别人的题解才自己做出来的。
import java.util.*;
import java.math.*;
public class Main {
public static int[] dx={1,1,-1,-1,0,0,1,-1};
public static int[] dy={-1,1,1,-1,1,-1,0,0};
public static int[][] is=new int[8][8];
public static int res=0;
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int t=sc.nextInt();
while(t!=0){
res=0;
int n=sc.nextInt();
int m=sc.nextInt();
int[][] nums=new int[n+1][m+1];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
nums[i][j]=sc.nextInt();
int sum=0;
dfs(1,0,sum,nums);
System.out.println(res);
t--;
}
}
public static void dfs(int x,int y,int sum,int[][] nums){
int n=nums.length-1;
int m=nums[0].length-1;
int xx=x;
int yy=y+1;
if(yy>m){
xx++;
yy=1;
}
if(xx>n){
res=Math.max(res,sum);
return;
}
//System.out.println(yy);
int i;
for(i=0;i<8;i++){
if(is[xx+dx[i]][yy+dy[i]]==1)
break;
}
if(i==8){
is[xx][yy]=1;
dfs(xx,yy,sum+nums[xx][yy],nums);
is[xx][yy]=0;
}
dfs(xx,yy,sum,nums);
}
}