File tree Expand file tree Collapse file tree 2 files changed +52
-0
lines changed Expand file tree Collapse file tree 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