public int minPathSum(int[][] grid) {
        if (grid == null || grid.length == 0)
        	return 0;
        
        int m = grid.length - 1;
        int n = grid[0].length - 1;
        int[][] status = new int[m+1][n+1];
        for(int[] row:status){
        	Arrays.fill(row, Integer.MIN_VALUE);
        }
        
        return Recursive(grid, status, m, n);
        		
    }