File tree 2 files changed +52
-0
lines changed
2 files changed +52
-0
lines changed Original file line number Diff line number Diff line change
1
+ // 有3种硬币面值分别为 2, 5,7
2
+ // 给定目标27,求使用最少的组合搭配出27
3
+ // 7 7 7 + 2 2 2 ==》 6
4
+
5
+ const dp = { }
6
+ const findMinNums = ( x ) => {
7
+ if ( dp [ x ] ) return dp [ x ]
8
+ if ( x <= 0 ) return x ;
9
+ let res = Number . MAX_VALUE ;
10
+ if ( x >= 2 ) {
11
+ res = Math . min ( res , findMinNums ( x - 2 ) + 1 )
12
+ }
13
+ if ( x >= 5 ) {
14
+ res = Math . min ( res , findMinNums ( x - 5 ) + 1 )
15
+ }
16
+ if ( x >= 7 ) {
17
+ res = Math . min ( res , findMinNums ( x - 7 ) + 1 )
18
+ }
19
+ dp [ x ] = res
20
+ return res
21
+ }
22
+ const findMinNums2 = ( A , x ) => {
23
+ const dp = [ ] ;
24
+ dp [ 0 ] = 0 ;
25
+ for ( let i = 1 ; i < x ; i ++ ) {
26
+ dp [ i ] = Number . MAX_VALUE
27
+ for ( let j = 0 ; j < A . length ; j ++ ) {
28
+ if ( i < A [ j ] || dp [ i - A [ j ] ] == Number . MAX_VALUE ) continue ;
29
+ dp [ i ] = Math . min ( dp [ i ] , dp [ i - A [ j ] ] + 1 )
30
+ }
31
+ }
32
+ return dp [ x - 1 ]
33
+ }
34
+
35
+ function test ( m , n ) {
36
+ const dp = [ ] ;
37
+ dp [ 0 ] = [ 1 ] ;
38
+ for ( let i = 0 ; i < m ; i ++ ) {
39
+ for ( let j = 0 ; j < n ; i ++ ) {
40
+ if ( i === 0 || j === 0 ) {
41
+ console . log ( dp [ i ] , i , j )
42
+ dp [ i ] [ j ] = 1 ;
43
+ }
44
+ else dp [ i ] [ j ] = dp [ i - 1 ] [ j ] + dp [ i ] [ j - 1 ] ;
45
+ }
46
+ }
47
+
48
+ return dp [ m - 1 ] [ n - 1 ]
49
+ }
50
+ console . time ( )
51
+ console . log ( findMinNums2 ( [ 2 , 5 , 7 ] , 27 ) )
52
+ console . timeEnd ( )
File renamed without changes.
You can’t perform that action at this time.
0 commit comments