import java.util.ArrayDeque; import java.util.Deque; public class Foo { private final static double[] nums = { 40.58, 49.50, 51.50, 71.90, 76.80, 85.00, 94.90, 95.40, 105.40, 116.95, 131.50, 144.40, 149.11, 155.39, 168.15, 175.50, 234.20, 269.76, 280.19, 643.00, }; private final static double result = 1084.83; private static Deque numbers=new ArrayDeque<>(); public static void main(String[] args) { double value=result; int i=nums.length-1; while(true){ value=value-nums[i]; if(value<-0.005){ value=value+nums[i]; }else if(value<0.005){ numbers.push(i); break; }else{ numbers.push(i); } i--; while(i<0){ i=numbers.pop(); value=value+nums[i]; i--; } } System.out.println("Solution:"); for(int number: numbers){ System.out.println(nums[number]); } } }