Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public int assignBikesMethod4(int[][] workers, int[][] bikes) {
- int dp[][] = new int[workers.length + 1][1 << bikes.length];
- for (int[] dpRow : dp) {
- Arrays.fill(dpRow, 20000);
- }
- int ans = MAX_VALUE;
- int n = workers.length;
- int m = bikes.length;
- dp[0][0] = 0;
- int combinations = 1 << m;
- for (int i = 1; i <= n; i++) {
- for (int mask = 1; mask < combinations; mask++) {
- for (int j = 0; j < m; j++) {
- if (checkSetBit(mask, j)) {
- int prev = mask ^ (1 << j);
- dp[i][mask] = min(dp[i - 1][prev] + manhattanDistance(workers[i - 1], bikes[j]), dp[i][mask]);
- if (i == n) ans = Math.min(dp[i][mask], ans);
- }
- }
- }
- }
- return ans;
- }
Add Comment
Please, Sign In to add comment