File tree 1 file changed +42
-0
lines changed
1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments