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

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -