chenyuesheng 3 лет назад
Родитель
Сommit
face050ac8

+ 28 - 0
src/main/java/com/jeeplus/modules/sg/balancedlibrary/materialReportDetails/service/MaterialReportDetailsService.java

@@ -30,6 +30,7 @@ import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -769,5 +770,32 @@ public class MaterialReportDetailsService extends CrudService<MaterialReportDeta
         }).collect(Collectors.toList());
     }
 
+    /**
+     * 贪心算法 递归组合
+     * @param total
+     * @param value
+     * @param resultMap
+     * @return
+     */
+    private Map<Integer, List<Integer>> GreedyAlgorithmRecursion(int total, List<Integer> value, Map<Integer, List<Integer>> resultMap) {
+        if (value.size() == 0 || resultMap.containsKey(total)) {
+            return resultMap;
+        }
+        int result = 0;
+        List<Integer> list = new ArrayList<>();
+        int temp = total;
+        for (int i = value.size() - 1; i >= 0; i--) {
+            if (temp >= value.get(i)) {
+                temp -= value.get(i);
+                if (temp >= 0) {
+                    list.add(i);
+                    result += value.get(i);
+                }
+            }
+        }
+        resultMap.put(result, list);
+        return GreedyAlgorithmRecursion(total, value.stream().limit(value.size() - 1).collect(Collectors.toList()), resultMap);
+    }
+
 
 }