53:礼物的最大价值

礼物的最大价值

在一个m*n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值
你可以从棋盘的左上角开始拿格子里的礼物,每一次向右或者向下一格,直到右下角

public class Offer53 {
   public static void main(String[] args) {
       int[][] arr = {
               {1,10,3,8},
               {12,2,9,6},
               {5,7,4,11},
               {3,7,16,5}
       };
       System.out.println(new Offer53().getMaxValue_solution2(arr,4,4));
   }
   // 申请一个辅助数组,来记录某个点的最大值
   public int getMaxValue_solution2(int[][] arr,int rows,int cols){
       if (arr==null||arr.length==0)return 0;
       int[] temp = new int[cols];

       for (int i = 0; i < rows; i++) {
           for(int j=0;j<cols;j++){
               int left = 0;
               int up = 0;

               if(i>0){
                   up = temp[j];
               }

               if(j>0){
                   left = temp[j-1];
               }
               int max = left>up?left:up;
               
               temp[j] = max+arr[i][j];
           }
       }

       return temp[cols-1];
   }
}

©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页