【LeetCode热题100】【动态规划】分割等和子集

embedded/2024/10/25 10:27:28/

题目链接:416. 分割等和子集 - 力扣(LeetCode)

判断数组能否被分成两个和相等的子数组,先求数组的和sum,即变成能不能找到一个组合的和是sum/2,每个数最多只能被选择一次,即0-1背包问题

0-1背包状态转移方程:如果选择,那么空间减少,价值增加,dp[i]为空间为i的最大价值

dp[j]=max(dp[j],dp[j-weight[i]]+value[i])

本问题:dp[i]为是否存在和为i的子集,如果选择当前元素,变成是否存在和为i-num的子集

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

特别注意如果sum是奇数,那么sum/2不是整数肯定不存在

class Solution {
public:bool canPartition(vector<int> &nums) {int sum = 0;for (auto &num: nums)sum += num;if (sum & 1)return false;int target = sum / 2;vector<bool> dp(target + 1);dp[0] = true;for (auto &num: nums) {for (int i = target; i >= num; --i) {dp[i] = dp[i] || dp[i - num];}}return dp[target];}
};


http://www.ppmy.cn/embedded/6687.html

相关文章

LLMs之Llama3:Llama 3的简介、安装和使用方法、案例应用之详细攻略

LLMs之Llama3&#xff1a;Llama 3的简介、安装和使用方法、案例应用之详细攻略 导读&#xff1a;2024年4月18日&#xff0c;Meta 重磅推出了Meta Llama 3&#xff0c;本文章主要介绍了Meta推出的新的开源大语言模型Meta Llama 3。模型架构 Llama 3 是一种自回归语言模型&#x…

LoRA训练参数解读

训练参数解读 项目源码&#xff1a; https://github.com/hiyouga/LLaMA-Factory CUDA_VISIBLE_DEVICES0 python src/train_bash.py \--stage sft \--do_train True \--model_name_or_path /home/ubuntu/THUDM/chatglm3-6b \--finetuning_type lora \--template chatglm3 \--…

驱动开发-windows驱动设计目标

驱动程序和应用程序不一样的&#xff0c;由于其直接运行于windows r0级&#xff0c;故对于开发有更多和更严格的标准&#xff0c;一般会有以下一些常见的设计目标: 安全性、可移植性、可配置性、 可被中断、多处理器安全、可重用 IRP、 支持异步 I/O这些是基本目标。 1. 安全…

html接入高德地图

1.申请key key申请地址&#xff1a;https://console.amap.com/dev/key/app 官方文档 https://lbs.amap.com/api/javascript-api-v2/summary 2.html接入示例 需要将YOUR_KEY替换成自己的key <!doctype html> <html> <head><meta charset"utf-…

27、Lua 学习笔记之五(Lua中的数学库)

Lua中的数学库 Lua5.1中数学库的所有函数如下表&#xff1a; math.pi 为圆周率常量 3.14159265358979323846 数学库说明例子方法abs取绝对值math.abs(-15)15acos反余弦函数math.acos(0.5)1.04719755asin反正弦函数math.asin(0.5)0.52359877atan2x / y的反正切值math.atan2(9…

VMware虚拟机ens33没有IP的解决办法

1.关闭NetworkManager服务 2.systemctl stop NetworkManager 3.systemctl restart network.service 4.service network restart [rootlocalhost network-scripts]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 …

移动端双验证码登录实现

说明&#xff1a;本文介绍如何用图形验证码短信验证码实现移动端登录思路&#xff1b; 分析 通过手机号图形验证码手机验证码实现登录的时序图如下&#xff1a; 说明&#xff1a; &#xff08;1&#xff09;用户进入登录界面&#xff0c;出现图形验证码&#xff0c;可点击图形…

Golang插件系统实现

插件可以在解耦的基础上灵活扩展应用功能&#xff0c;本文介绍了如何基于Golang标准库实现插件功能&#xff0c;帮助我们构建更灵活可扩展的应用。原文: Plugins with Go 什么是插件 简单来说&#xff0c;插件就是可以被其他软件加载的软件&#xff0c;通常用于扩展应用程序的功…