arrays - java recursion: best collection of numbers -
given array of integers , given integer. how use recursion find collection of integers array sum of collection closest given integer? example, given array:1,2,3 , given integer 5, method returns 2,3; example: if given array is: 35,14,45,3 , given integer 50, method returns 35 , 14.
it looks homework, i'll not put code, try explain algorithm. imagine, you're given [35, 14, 45, 3]
, 50
;
1. first sort array in descending order: [45, 35, 14, 3] 2. should remove 1st item in array , take or leave 3. you'll have 2 smaller problems: [35, 14, 3] , 5 (45 taken) [35, 14, 3] , 50 (45 left) 4. cut story short keep best score far: 5 in case. let trim negative value branches [35, 14, 3] , 5 (45 taken) best far 5. if array not empty, go step 2
the whole trace is
[35, 14, 3] , 5 (45 taken) // best score far [14, 3] , -30 (45, 35 taken) // trim: worse best score far [14, 3] , 5 (45 taken) [3] , -9 (45, 14 taken) // trim [3] , 5 (45 taken) [] , 2 (45, 3 taken) // best score far [] , 5 (45 taken) [35, 14, 3] , 50 (nothing taken) [14, 3] , 15 (35 taken) [3] , 1 (35, 14 taken) // best score far [] , -2 (35, 14, 3 taken) [3] , 15 (35 taken) [] , 12 (35, 3 taken) ...
finally, best score far 1
solution (35, 14)
taken. when implementing, can make 2 recursive calls: 1 "take" , 1 "leave".
Comments
Post a Comment