首页 > 编程语言 >算法学习day42动态规划part04-416

算法学习day42动态规划part04-416

时间:2023-06-05 23:44:31浏览次数:61  
标签:target nums int sum part04 416 day42 dp

package LeetCode.DPpart04;
/**
 * 416. 分割等和子集
 * 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。
 * 示例:
 * 输入:nums = [1,5,11,5]
 * 输出:true
 * 解释:数组可以分割成 [1, 5, 5] 和 [11] 。
 * */
public class PartitionEqualSubsetSum_416 {
    public static void main(String[] args) {
        int [] nums = {1,5,11,5};
        boolean result = canPartition(nums);
        System.out.println(result);

    }
    public static boolean canPartition(int[] nums) {
        if(nums == null || nums.length == 0) return false;
        int n = nums.length;
        int sum = 0;
        for(int num : nums) {
            sum += num;
        }
        //总和为奇数,不能平分
        if(sum % 2 != 0) return false;
        int target = sum / 2;
        int[] dp = new int[target + 1];
        for(int i = 0; i < n; i++) {
            for(int j = target; j >= nums[i]; j--) {
                //物品 i 的重量是 nums[i],其价值也是 nums[i]
                dp[j] = Math.max(dp[j], dp[j-nums[i]] + nums[i]);
            }
        }
        return dp[target] == target;
    }

}

 

标签:target,nums,int,sum,part04,416,day42,dp
From: https://www.cnblogs.com/lipinbigdata/p/17459319.html

相关文章

  • 算法学习day35贪心part04-860、406、452
    packageLeetCode.greedypart04;/***860.柠檬水找零*在柠檬水摊上,每一杯柠檬水的售价为5美元。顾客排队购买你的产品,(按账单bills支付的顺序)一次购买一杯。*每位顾客只买一杯柠檬水,然后向你付5美元、10美元或20美元。你必须给每个顾客正确找零,也就是说净交易是每......
  • 代码随想录算法训练营第17天 | ● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404
     第六章二叉树part04 今日内容:  ●  110.平衡二叉树 ●  257. 二叉树的所有路径 ●  404.左叶子之和   详细布置  迭代法,大家可以直接过,二刷有精力的时候 再去掌握迭代法。  110.平衡二叉树 (优先掌握递归) 再一次涉及到,什么是高度,什么是......
  • 算法学习day28回溯part04-93、78、90
    packageLeetCode.backtrackpart04;importjava.util.ArrayList;importjava.util.List;/***93.复原IP地址*有效IP地址正好由四个整数(每个整数位于0到255之间组成,且不能含有前导0),整数之间用'.'分隔。*例如:"0.1.2.201"和"192.168.1.1"是有效IP地......
  • 代码随想录算法训练营第14天 | ● 理论基础 ● 递归遍历 ● 迭代遍历 ● 统一迭代 -
     第六章二叉树part01今日内容:  ●  理论基础●  递归遍历  ●  迭代遍历●  统一迭代   详细布置   理论基础  需要了解 二叉树的种类,存储方式,遍历方式 以及二叉树的定义  文章讲解:https://programmercarl.com/%E4%BA%8C%E5%8F%89%......
  • 416. 分割等和子集
    给你一个只包含正整数的非空数组nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。输入:nums=[1,5,11,5]输出:true解释:数组可以分割成[1,5,5]和[11]。标准解法classSolution{public:boolcanPartition(vector<int>&nums)......
  • P4163 [SCOI2007]排列
    Problem给一个数字串\(s\)和正整数\(d\),统计\(s\)有多少种不同的排列能被\(d\)整除(可以有前导\(0\))。多组数据。\(\left\verts\right\vert\le10,1\led\le1000,1\let\le15\)Input第一行一个整数\(t\),表示数据组数。接下来\(t\)行,每行一个数字串\(s\)......
  • 河北稳控科技多通道振弦传感器采集仪VTN416P(H)接口定义
    河北稳控科技多通道振弦传感器采集仪VTN416P(H)接口定义 端子定义记忆口诀:不管什么功能的端子,右侧均是负。所以,传感器端子最右两个是频率正负,电源端子从左往右是正负,不需要考虑端子在上侧还是下侧不管怎么处理、谁在现场检查,不需要看手册,只记住一句话就行,“右侧是负”,见下图。......
  • K-D Tree模板/P4169 [Violet]天使玩偶/SJY摆棋子
    \(\color{purple}\text{P4169[Violet]天使玩偶/SJY摆棋子}\)以本题为例题讲解模板怎么写。思路\(\text{K-DTree}\)是一种类二叉查找树,不过元素是多维的,所以每次对于子树的划分也是依据不同维度的。本题使用二维的\(\text{K-DTree}\),这样每次将图分成左右子树其实就是将......
  • LeetCode 416 分割等和子集
    LeetCode|416.分割等和子集给你一个只包含正整数的非空数组 nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。示例1:输入:nums=[1,5,11,5]输出:true解释:数组可以分割成[1,5,5]和[11]。示例2:输入:nums=[1,2,3,5]输出:false解......
  • CF1416 Div.1 VP记
    好久没打CF了,感觉写代码能力有所下降,vp一场看看,差点被阻击没了。ACF题面先考虑将某一个数字提出来,可以发现如果这个数字要对答案造成贡献,那么\(k\)最小为没有该数字的区间中最长的区间长度加一。点击查看代码#include<bits/stdc++.h>#defineullunsignedlonglong#def......