程序来检查是否可以在Python中将两个分区组成相等的组?

假设我们有一个称为nums的数字列表,我们必须检查是否可以将nums分为两组,两组中的元素之和是相同的。

因此,如果输入像nums = [2,3,6,5],那么输出将为True,因为我们可以将组划分为:[2,6]和[3,5]。

为了解决这个问题,我们将按照以下步骤

  • 总计:=所有元素的总和

  • 如果总数是奇数,则

    • 返回False

  • 一半:=总数的整数部分/ 2

  • dp:=大小为一半+ 1并以false填充的列表

  • dp [0]:= true

  • 对于以num为单位的每个num

    • 如果i> = num,则

    • dp [i]:= dp [i]或dp [i-num]

    • 因为我的范围是0的一半,所以减少1,

    • 返回dp [一半]


    示例

    class Solution:

       def solve(self, nums):

          total = sum(nums)

          if total & 1:

             return False

          half = total // 2

          dp = [True] + [False] * half

          for num in nums:

             for i in range(half, 0, -1):

                if i >= num:

                   dp[i] |= dp[i - num]

          return dp[half]

    ob = Solution()nums = [2, 3, 6, 5]

    print(ob.solve(nums))

    输入项

    [2, 3, 6, 5]

    输出结果

    True

    以上是 程序来检查是否可以在Python中将两个分区组成相等的组? 的全部内容, 来源链接: utcz.com/z/321597.html

    回到顶部