From b2134f4dd4a391200f9f514e1622bbe632865b81 Mon Sep 17 00:00:00 2001 From: mwiacx <759046501@qq.com> Date: Wed, 27 Sep 2023 09:22:45 +0800 Subject: [PATCH] update find_subset_with_target_sum function --- internlm/solver/optimizer/utils.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/internlm/solver/optimizer/utils.py b/internlm/solver/optimizer/utils.py index 606281c..d02ef2d 100644 --- a/internlm/solver/optimizer/utils.py +++ b/internlm/solver/optimizer/utils.py @@ -326,10 +326,14 @@ def find_subset_with_target_sum(nums: List[int], target: int, approximate_thresh if len(part_idxs) > 0 and (-target * approximate_threshold <= tmpTarget <= target * approximate_threshold): indexs.append(part_idxs) + elif tmpTarget > sum(nums[start:]) + target * approximate_threshold: + return elif tmpTarget > 0: for i in range(start, len(nums)): num = nums[i] - _inner_helper(start + 1, tmpTarget - num, part_idxs + [i]) + if num - target * approximate_threshold > tmpTarget: + continue + _inner_helper(i + 1, tmpTarget - num, part_idxs + [i]) _inner_helper(start=0, tmpTarget=target, part_idxs=[])