public class MinDistanceProblem{ public static int minDis1(int[][] arr,int startR,int startC){ return arr[startR][startC]+process1(arr,startR,startC); } public static int process1(int[][] arr,int curR,int curC){ if(curR == arr.length-1 && curC == arr[0].length-1){ return 0; } int ans=0; //到最后一行,只能往右走 if(curR== arr.length-1 && curC < arr[0].length-1){ ans+= arr[curR][curC+1]+process1(arr,curR,curC+1); } //到最后一列,只能往下走 else if(curR< arr.length-1 && curC == arr[0].length-1){ ans+= arr[curR+1][curC]+process1(arr,curR+1,curC); }else{ ans += Math.min(arr[curR+1][curC]+process1(arr,curR+1,curC), arr[curR][curC+1]+process1(arr,curR,curC+1)); } return ans; } public static int minDis2(int[][] arr,int startR,int startC){ int N = arr.length; int M = arr[0].length; int[][] dp = new int[N][M]; for (int i=0; i