File tree Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[][] } workers
3
+ * @param {number[][] } bikes
4
+ * @return {number }
5
+ */
6
+ const assignBikes = function ( workers , bikes ) {
7
+ const n = workers . length
8
+ const m = bikes . length
9
+ const dp = Array . from ( { length : n + 1 } , ( ) =>
10
+ Array ( 1 << m ) . fill ( Number . MAX_VALUE / 2 )
11
+ )
12
+
13
+ dp [ 0 ] [ 0 ] = 0
14
+ let min = Number . MAX_VALUE
15
+ for ( let i = 1 ; i <= n ; i ++ ) {
16
+ for ( let s = 1 ; s < 1 << m ; s ++ ) {
17
+ for ( let j = 0 ; j < m ; j ++ ) {
18
+ if ( ( s & ( 1 << j ) ) === 0 ) continue
19
+ let prev = s ^ ( 1 << j )
20
+ dp [ i ] [ s ] = Math . min (
21
+ dp [ i - 1 ] [ prev ] + dis ( workers [ i - 1 ] , bikes [ j ] ) ,
22
+ dp [ i ] [ s ]
23
+ )
24
+ if ( i === n ) min = Math . min ( min , dp [ i ] [ s ] )
25
+ }
26
+ }
27
+ }
28
+ return min
29
+ }
30
+
31
+ function dis ( p1 , p2 ) {
32
+ return Math . abs ( p1 [ 0 ] - p2 [ 0 ] ) + Math . abs ( p1 [ 1 ] - p2 [ 1 ] )
33
+ }
You can’t perform that action at this time.
0 commit comments