Guest User

Campus Bike II | BOTTOM UP DP

a guest
Oct 12th, 2019
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.80 KB | None | 0 0
  1. public int assignBikesMethod4(int[][] workers, int[][] bikes) {
  2.     int dp[][] = new int[workers.length + 1][1 << bikes.length];
  3.     for (int[] dpRow : dp) {
  4.         Arrays.fill(dpRow, 20000);
  5.     }
  6.     int ans = MAX_VALUE;
  7.     int n = workers.length;
  8.     int m = bikes.length;
  9.     dp[0][0] = 0;
  10.     int combinations = 1 << m;
  11.     for (int i = 1; i <= n; i++) {
  12.         for (int mask = 1; mask < combinations; mask++) {
  13.             for (int j = 0; j < m; j++) {
  14.                 if (checkSetBit(mask, j)) {
  15.                     int prev = mask ^ (1 << j);
  16.                     dp[i][mask] = min(dp[i - 1][prev] + manhattanDistance(workers[i - 1], bikes[j]), dp[i][mask]);
  17.                     if (i == n) ans = Math.min(dp[i][mask], ans);
  18.                 }
  19.             }
  20.         }
  21.     }
  22.     return ans;
  23. }
Add Comment
Please, Sign In to add comment