Skip to content

Commit 084576b

Browse files
add Costumes solution
1 parent adf7c40 commit 084576b

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

medium300/Costumes.java

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package medium300;
2+
3+
public class Costumes {
4+
5+
int[][] dp;
6+
int[][] dist;
7+
int n;
8+
9+
int res(int ind, int mask) {
10+
11+
if (mask == ((1 << n) - 1))
12+
return dist[ind][0];
13+
14+
if (dp[ind][mask] != -1)
15+
return dp[ind][mask];
16+
17+
int ret = 1 << 20;
18+
19+
for (int i = 0; i < n; i++)
20+
if ((mask & (1 << i)) == 0)
21+
ret = Math.min(ret, dist[ind][i] + res(i, mask | (1 << i)));
22+
return dp[ind][mask] = ret;
23+
}
24+
25+
public int minimumPath(int[] x, int[] y) {
26+
n = x.length;
27+
dist = new int[20][20];
28+
dp = new int[18][1 << 18];
29+
for (int i = 0; i < x.length; i++)
30+
for (int j = i + 1; j < y.length; j++) {
31+
int cost = Math.abs(x[i] - x[j]) + Math.abs(y[i] - y[j]);
32+
dist[i][j] = cost;
33+
dist[j][i] = cost;
34+
}
35+
36+
for (int i = 0; i < 18; i++)
37+
for (int j = 0; j < 1 << 18; j++)
38+
dp[i][j] = -1;
39+
40+
return res(0, 1);
41+
}
42+
}

0 commit comments

Comments
 (0)