代码随想录算法训练营Day35 | 01背包问题 | 416. 分割等和子集

embedded/2024/12/23 0:12:48/

今日任务

01背包问题

  • 题目链接: https://kamacoder.com/problempage.php?pid=1046
  • 题目描述
    在这里插入图片描述

Code

#include <iostream>
#include <vector>
#include <functional>
#include <algorithm>using namespace std;int main(void){int n, sz;cin >> n >> sz;vector<int> spaces(n);vector<int> values(n);for(int i = 0; i < n; i++){cin >> spaces[i];}for(int i = 0; i < n; i++){cin >> values[i];}// dp[i][c] = max(dp[i - 1][c], dp[i - 1][c - spaces[i]] + values[i]);vector<int> dp(sz + 1);for(int i = 0; i < n; i++){int x = spaces[i], v = values[i];for(int c = sz; c >= x; c--){dp[c] = max(dp[c], dp[c - x] + v);}}cout << dp[sz] << "\n";return 0;
}

416. 分割等和子集

  • 题目链接: https://leetcode.cn/problems/partition-equal-subset-sum/
  • 题目描述
    在这里插入图片描述

Code

class Solution {
public:bool canPartition(vector<int>& nums) {int sum = reduce(nums.begin(), nums.end(), 0);if(sum % 2){return false;}int t = sum / 2;int n = nums.size();// vector<vector<int>> memo(n, vector<int>(t + 1, -1));// function<bool(int, int)> dfs = [&](int i, int c)->bool{//     if(i < 0){//         return c == 0;//     }//     int &res = memo[i][c];//     if(res != -1){//         return res;//     }//     // if(c < nums[i]){//     //     return res = dfs(i - 1, c);//     // }//     // return res = dfs(i - 1, c) || dfs(i - 1, c - nums[i]);//     return res = c >= nums[i] && dfs(i - 1, c - nums[i]) || dfs(i - 1, c);// };// return dfs(n - 1, t);// vector<vector<bool>> dp(n + 1, vector<bool>(t + 1));// dp[0][0] = true;// for(int i = 0; i < n; i++){//     int x = nums[i];//     for(int c = 0; c <= t; c++){//         dp[i + 1][c] = c >= x && dp[i][c - x] || dp[i][c];//     }// }// return dp[n][t];vector<bool> dp(t + 1);dp[0] = true;int pre = 0;for(int x : nums){pre = min(pre + x, t);for(int c = pre; c >= x; c--){dp[c] = dp[c] || dp[c - x];}}return dp[t];}
};

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

相关文章

FFmpeg源码:av_init_packet、get_packet_defaults、av_packet_alloc函数分析

一、av_init_packet函数 av_init_packet函数定义在FFmpeg源码&#xff08;本文演示用的FFmpeg源码版本为7.0.1&#xff09;的源文件libavcodec/avpacket.c中&#xff1a; /*** Initialize optional fields of a packet with default values.** Note, this does not touch the…

LLVM理论篇之编译器结构

1、概述 编译器完成源程序到目标程序的翻译工作&#xff0c;这是一个复杂的整体过程。从概念上讲&#xff0c;一个编译程序的整体过程可以分为3个阶段&#xff0c;每个阶段将程序的一种语言表示形式转换成另一种语言表示形式&#xff0c;并且各个阶段在逻辑上是紧密相连的。典…

培训第二十二天(mysql数据库主从搭建)

上午 1、为mysql添加开机启动chkconfig [rootmysql1 ~]# chkconfig --list //列出系统服务在不同运行级别下的启动状态注&#xff1a;该输出结果只显示 SysV 服务&#xff0c;并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。 要列出 systemd 服务…

计算机网络ISO七层网络模型及TCP

思维导图&#xff08;通俗理解&#xff09; 首先&#xff0c;先用最通俗的话来描述ISO七层模型&#xff0c;思维导图结构如下&#xff1a; ISO七层网络模型概念 应用层&#xff08;Application Layer&#xff09;&#xff1a;应用层是OSI模型的最高层&#xff0c;直接与用户交…

[other][知识]在《赌客信条》一书中归纳为5句话

在《赌客信条》一书中&#xff0c;作者孙惟微将前景理论归纳为5句话&#xff1a; 1、“二鸟在林&#xff0c;不如一鸟在手”&#xff0c;在确定的收益和“赌一把”之间&#xff0c;多数人会选择确定的好处。所谓“见好就收&#xff0c;落袋为安。称之为“确定效应”。 …

MAC里QT调用vlc

mac中已经安装了vlc并且可以正常播放视频&#xff0c;但在QT中调用vlc相关SDK无法找到&#xff0c;报错&#xff1a; vlc/libvlc.h file not found QT找不到vlc的路径&#xff0c;需要在QT中添加路径 查找vlc的安装路径&#xff1a;可参考该博客 MAC如何快速查看软件安装路…

通过python管理mysql

打开防火墙端口&#xff1a; 使用 firewall-cmd 命令在防火墙的 public 区域中永久添加 TCP 端口 7500&#xff08;FRP 控制台面板端口&#xff09;、7000&#xff08;FRP 服务端端口&#xff09;以及端口范围 6000-6100&#xff08;一组客户端端口&#xff09;。这些端口是 FR…

鸿蒙(API 12 Beta3版)【获取支持的编解码能力】 音视频编码

因来源不同、编解码器协议不同以及设备在编解码能力部署上的不同&#xff0c;在不同设备上开发者可用的编解码器及其能力是有差异的。 为确保编解码行为符合预期&#xff0c;开发者应提前通过音视频编解码能力系列接口查询系统支持的音视频编解码器及其关联的能力参数&#xf…