微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 1 个列表拆分为 2 个,使得 2 个列表的总和相等

如何解决将 1 个列表拆分为 2 个,使得 2 个列表的总和相等

我在此链接中找到了以下解决方案:https://stackoverflow.com/a/65029364/15413964

但是,当没有解决方案时,它不考虑。例如,给定一个列表,当它被分成 2 个时,两个列表永远不会相加为相同的数量

基本情况应该是什么使得给定的列表没有解决方案,并且它会为左右返回 None ?

 def sumSplit(left,right=[],difference=0):
      sumLeft,sumRight = sum(left),sum(right)

      if sumLeft<sumRight or len(left)<len(right): return
    
      # return a solution if sums match the tolerance target
      if sumLeft-sumRight == difference:
        check = True
        return left,right
       
      # recurse,brutally attempting to move each item to the right
      for i,value in enumerate(left):
          solution = sumSplit(left[:i]+left[i+1:],right+[value])
          if solution: 
            return solution

#test case:
print(sumSplit([-14,3,4,13,-1,-5,5,-10,8,-4,10,-12,11,9,12,-6,-11,-9,-8]))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。