leetcode416. Partition Equal Subset Sum

栏目: 编程工具 · 发布时间: 6年前

内容简介:假设有一个全为正整数的非空数组,将其中的数字分为两部分,确保两部分数字的和相等。这和0-1背包问题是完全一样的,01背包问题是指假设有n个物品,每个物品中为weight[i],假设背包的承重为k,问如何选择物品使得背包中的承重最大。而这里的问题等价于,有n个物品,每个物品承重为input[i],问如何挑选物品,使得背包的承重搞好为所有物品重量和的一般。假设我们已经知道前i个物品是否能够构成重量k,我们令该值为dpi,那么第i+1个物品是否能够构成重量取决于dpi和dpi], 即i+1个物品能够构成重量k有两

题目要求

Given a non-empty array containing only positive integers, find if the array can be partitioned into two subsets such that the sum of elements in both subsets is equal.

Note:
1.Each of the array element will not exceed 100.
2.The array size will not exceed 200.
Example 1:

Input: [1, 5, 11, 5]

Output: true

Explanation: The array can be partitioned as [1, 5, 5] and [11].
Example 2:

Input: [1, 2, 3, 5]

Output: false

Explanation: The array cannot be partitioned into equal sum subsets.

假设有一个全为正整数的非空数组,将其中的数字分为两部分,确保两部分数字的和相等。

思路和代码

这和0-1背包问题是完全一样的,01背包问题是指假设有n个物品,每个物品中为weight[i],假设背包的承重为k,问如何选择物品使得背包中的承重最大。而这里的问题等价于,有n个物品,每个物品承重为input[i],问如何挑选物品,使得背包的承重搞好为所有物品重量和的一般。

假设我们已经知道前i个物品是否能够构成重量k,我们令该值为dpi,那么第i+1个物品是否能够构成重量取决于dpi和dpi], 即i+1个物品能够构成重量k有两种情况,第一种选择了i+1个物品,则要寻找前i个物品是否构成k-input[i+1]的重量,第二种就是没有选择第i+1个物品,则直接判断前i个物品是否已经构成了k的重量。

代码如下:

public boolean canParition(int[] nums) {
        int sum = 0;
        for(int n : nums) {
            sum += n;
        }
        if(sum % 2 != 0) return false;
        int half = sum / 2;
        boolean[][] sums = new boolean[nums.length+1][half+1];
        for(int i = 0 ; i<=nums.length ; i++) {
            for(int j = 0 ; j<=half ; j++) {
                if(i==0 && j==0){
                    sums[i][j] = true;
                }else if(i==0) {
                    sums[i][j] = false;
                }else if(j==0){
                    sums[i][j] = true;
                }else {
                    sums[i][j] = sums[i-1][j] || (nums[i-1] <= j ? sums[i-1][j-nums[i-1]] : false);
                }
            }
        }
        return sums[nums.length][half];
    }

以上所述就是小编给大家介绍的《leetcode416. Partition Equal Subset Sum》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

计算机视觉

计算机视觉

Richard Szeliski / 艾海舟、兴军亮 / 清华大学出版社 / 2012-1 / 109.00元

《计算机视觉——算法与应用》探索了用于分析和解释图像的各种常用技术,描述了具有一定挑战性的视觉应用方面的成功实例,兼顾专业的医学成像和图像编辑与交织之类有趣的大众应用,以便学生能够将其应用于自己的照片和视频,从中获得成就感和乐趣。本书从科学的角度介绍基本的视觉问题,将成像过程的物理模型公式化,然后在此基础上生成对场景的逼真描述。作者还运用统计模型来分析和运用严格的工程方法来解决这些问题。 本......一起来看看 《计算机视觉》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具