python怎么分割等和子集

这篇文章主要讲解了“python怎么分割等和子集”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python怎么分割等和子集”吧!

10多年的孝昌网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站的优势是能够根据用户设备显示端的尺寸不同,自动调整孝昌建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“孝昌网站设计”,“孝昌网站推广”以来,每个客户项目都认真落实执行。

题目: 分割等和子集

给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。

注意:

每个数组中的元素不会超过 100

数组的大小不会超过 200

示例 1:

输入: [1, 5, 11, 5]

输出: true

解释: 数组可以分割成 [1, 5, 5] 和 [11].

示例 2:

输入: [1, 2, 3, 5]

输出: false

解释: 数组不能分割成两个元素和相等的子集.

解题:

dp问题。将数组切分为等和子集,即是求任意个元素的和等于数组和的一半。使用dp数组,第i个元素表示任意个元素的和能否等于i。那么在任意一个dp[i-n](n为nums中任意元素)为True的情况下,dp[i] 为True。

代码

class Solution:
    def canPartition(self, nums: List[int]) -> bool:
        target = sum(nums)
        if target % 2 == 1:
            return False
        
        nums.sort()
        target = target // 2
        dp =  [False] * (target + 1)
        dp[0] = True
        for i, n in enumerate(nums):
            for j in range(target, n - 1, -1):
                if dp[j - n] == True:
                    dp[j] = True
        print(dp)
        return dp[-1]

感谢各位的阅读,以上就是“python怎么分割等和子集”的内容了,经过本文的学习后,相信大家对python怎么分割等和子集这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


名称栏目:python怎么分割等和子集
当前网址:http://ybzwz.com/article/gpipep.html