import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int m = scan.nextInt();
int[][] arr = new int[n][m];
for(int i = 0;i<n;i++){
for(int j = 0;j<m;j++){
arr[i][j] = scan.nextInt();
}
}
int[][] dp = new int[n][m];
//九个位置的横纵坐标
int[] x = {0,0,0,-1,-1,-1,-2,-2,-3};
int[] y = {-1,-2,-3,0,-1,-2,0,-1,0};
for(int a= 0;a<n;a++){
for(int b = 0;b<m;b++){
if(a == 0 && b == 0){
dp[a][b] = arr[0][0];
}else{
for(int k = 0;k<9;k++){
int lastX = a + x[k];
int lastY = b + y[k];
if (lastX >= 0 && lastX < n && lastY >= 0 && lastY < m) {
dp[a][b] = Math.max(dp[a][b], dp[lastX][lastY] + arr[a][b]);
}
}
}
}
}
System.out.println(dp[n - 1][m - 1]);
}
}
自己写的时候没有写出来,看来别人的
收获:没有思路的时候可以画画,找找规律,要有逆向思维