Advertisement
asrivenki

Dynamic Programming: MinimumCostOfJump

Dec 6th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. package dynamicprogramming.minmax;
  2.  
  3. import java.util.Arrays;
  4. import java.util.HashSet;
  5. import java.util.Set;
  6.  
  7. public class MinimumCostOfJump {
  8.  
  9. static int minCostStairClimbing(int[] arr, int[] jumps) {
  10. int n = arr.length;
  11. Set<Integer> jumpSet = new HashSet<>();
  12.  
  13. Arrays.stream(jumps).forEach(e -> jumpSet.add(e));
  14.  
  15. int[] a = new int[n+2];
  16. for(int i=0; i<n; i++) {
  17. a[i+1] = arr[i];
  18. }
  19. a[n+1] = 0;
  20.  
  21. int[] dp = new int[n+2];
  22.  
  23. for(int j: jumps) {
  24. if(j<=n)
  25. dp[j] = a[j];
  26. }
  27.  
  28. for(int i=1; i<=n+1; i++) {
  29. if(!jumpSet.contains(i)) {
  30. int min = Integer.MAX_VALUE;
  31. for(int j: jumps) {
  32. if(i-j > 0)
  33. min = Math.min(min, dp[i-j]);
  34. }
  35. dp[i] = a[i] + min;
  36. }
  37. }
  38.  
  39. return dp[n+1];
  40. }
  41.  
  42. public static void main(String d[]) {
  43. int a[] = {10,15,10,5,20,10};
  44. int[] jumps = {1,2,5};
  45.  
  46. System.out.println(minCostStairClimbing(a, jumps));
  47. }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement