Advertisement
Guest User

Untitled

a guest
Jan 26th, 2020
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.79 KB | None | 0 0
  1. public int minDifficulty(int[] jobDifficulty, int d) {
  2.         int N = jobDifficulty.length;
  3.         if (N < d) return -1;
  4.        
  5.         int[][] dp = new int[d][N];
  6.         dp[0][0] = jobDifficulty[0];
  7.         for (int i = 1; i < N; ++i) {
  8.             dp[0][i] = Math.max(dp[0][i-1], jobDifficulty[i]);
  9.         }
  10.        
  11.         for (int k = 1; k < d; ++k) {
  12.             for (int j = N-1; j >= k; --j){
  13.                 int max = Integer.MIN_VALUE;
  14.                 int min = Integer.MAX_VALUE;
  15.                 for (int i = j - 1; i >= k - 1; --i) {
  16.                     max = Math.max(max, jobDifficulty[i+1]);
  17.                     min = Math.min(min, dp[k - 1][i] + max);
  18.                 }
  19.                 dp[k][j] = min;
  20.             }
  21.         }
  22.        
  23.         return dp[d-1][N-1];
  24.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement