代码随想录算法训练营第四十二天 | 卡码网46. 携带研究材料、416. 分割等和子集

news2024/10/7 16:21:20

代码随想录算法训练营第四十二天 | 卡码网46. 携带研究材料、416. 分割等和子集

  • 卡码网46. 携带研究材料
    • 题目
    • 解法
  • 416. 分割等和子集
    • 题目
    • 解法
  • 感悟

卡码网46. 携带研究材料

题目

在这里插入图片描述

解法

题解链接

  1. 二维数组
# include <bits/stdc++.h>
using namespace std;

int n, bagweight;// bagweight 表示行李箱容量

void solve(){
    vector<int> weight(n, 0);// 每件物品的所占空间
    vector<int> value(n, 0); // 每件物品的价值
    for(int i = 0; i < n; i++){
        cin >> weight[i];
    }
    for(int j = 0; j < n; j++){
        cin >> value[j];
    }
     // dp数组, dp[i][j]代表行李箱空间为j的情况下,从下标为[0, i]的物品里面任意取,能达到的最大价值
    vector<vector<int>> dp(weight.size(), vector<int>(bagweight+1, 0));
    
    // 初始化 需要dp[i-1]的值
    // j < weight[0]已在上方被初始化为0
    // j >= weight[0]的值就初始化为value[0]
    for(int j = weight[0]; j <= bagweight; j++){
        dp[0][j] = value[0];  // 假如只有第一个物品,
    }
    for(int i = 1; i < weight.size(); i++){
        for(int j = 0; j <= bagweight; j++){// 遍历行李箱容量
            if(j < weight[i]) dp[i][j] = dp[i-1][j];
            else dp[i][j] = max(dp[i-1][j], dp[i-1][j-weight[i]] + value[i]);
        }
    }
    cout << dp[weight.size()-1][bagweight] << endl;
}
int main(){
    while(cin >> n >> bagweight){
        solve();
    }
    return 0;
}

时间复杂度:O(n^2 )
空间复杂度:O(n^2 )
2.一维数组

// 一维dp数组实现
#include <iostream>
#include <vector>
using namespace std;

int main() {
    // 读取 M 和 N
    int M, N;
    cin >> M >> N;

    vector<int> costs(M);
    vector<int> values(M);

    for (int i = 0; i < M; i++) {
        cin >> costs[i];
    }
    for (int j = 0; j < M; j++) {
        cin >> values[j];
    }

    // 创建一个动态规划数组dp,初始值为0
    vector<int> dp(N + 1, 0);

    // 外层循环遍历每个类型的研究材料
    for (int i = 0; i < M; ++i) {
        // 内层循环从 N 空间逐渐减少到当前研究材料所占空间
        for (int j = N; j >= costs[i]; --j) {
            // 考虑当前研究材料选择和不选择的情况,选择最大值
            dp[j] = max(dp[j], dp[j - costs[i]] + values[i]);
        }
    }

    // 输出dp[N],即在给定 N 行李空间可以携带的研究材料最大价值
    cout << dp[N] << endl;

    return 0;
}

时间复杂度:O( n^2)
空间复杂度:O( n)

416. 分割等和子集

题目

在这里插入图片描述

解法

题解链接
1.

class Solution {
public:
    bool canPartition(vector<int>& nums) {
        int sum = 0; // 记录数组总和
        // dp[i]中的i表示背包内总和
        // 题目中说:每个数组中的元素不会超过 100,数组的大小不会超过 200
        // 总和不会大于20000,背包最大只需要其中一半,所以10001大小就可以了
        vector<int> dp(10001,0);
        sum = accumulate(nums.begin(), nums.end(), 0);//
        if(sum % 2 == 1) return false;
        int target = sum / 2;
        for (int i = 0; i < nums.size(); i++) {
            for (int j = target; j >= nums[i]; j--) {
                dp[j] = max(dp[j], dp[j-nums[i]] + nums[i]);
            }
        }
        if(dp[target] == target) return true;
        return false;
    }
};

时间复杂度:O(n^2 )
空间复杂度:O( n)

感悟

写出来更好理解一些

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1563756.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

谷歌google广告和必应Bing广告,是否二选一?

搜索引擎广告凭借其精准定向、高度可见性和高效转化能力&#xff0c;成为众多企业拓展海外市场、提升品牌影响力的重要手段。其中&#xff0c;谷歌Google与必应Bing作为全球两大主流搜索引擎&#xff0c;各自拥有庞大的用户群体与独特的市场优势。面对这两大广告平台&#xff0…

《自动机理论、语言和计算导论》阅读笔记:p68-p114

《自动机理论、语言和计算导论》学习第4天&#xff0c;p68-p114总结&#xff0c;总计47页。 一、技术总结 1.inverted indexes 明白单词的意思是“反转的索引”&#xff0c;但是不明白其在书中具体指什么&#xff0c;去查询资料的话需要花很不多时间&#xff0c;先继续往下看…

dcoker 下redis设置密码

修改Docker里面Redis密码 Redis是一个开源的内存数据结构存储系统&#xff0c;常用于缓存、消息队列和数据持久化等场景。在使用Docker部署Redis时&#xff0c;默认情况下是没有设置密码的&#xff0c;这可能会导致安全隐患。因此&#xff0c;为了保证数据的安全性&…

关于第十二届蓝桥杯时间显示题中包和模块的使用解释

题目信息&#xff1a; 解题代码&#xff1a; from datetime import datetime, timedelta # 定义起始时间&#xff0c;即 Unix 时间戳的零点&#xff08;1970年1月1日&#xff09; start datetime(year1970, month1, day1) # 定义时间间隔&#xff0c;这里以毫秒为单位 dela …

营销归因模型 - 销售员想知道却不敢问的问题

当谈到营销归因时&#xff0c;单一的尺寸并不适合所有人。了解归因的基本原理、可用的模型以及哪些模型最适合您的公司。我在翻译这个单词的时候&#xff0c;一度要翻译成属性&#xff0c;归因还是贡献值&#xff0c;纠结了很久。后来还是觉得归因比贡献值更贴切一下。 今天的…

数据结构(初阶)第二节:顺序表

从本文正式进入对数据结构的讲解&#xff0c;开始前友友们要有C语言的基础&#xff0c;熟练掌握动态内存管理、结构体、指针等章节&#xff0c;方便后续的学习。 顺序表&#xff08;Sequence List&#xff09; 线性表的概念&#xff1a;线性表&#xff08;linear list&#xff…

【数字图像处理】二值图和灰度图的形态学处理

文章目录 形态学处理二值图形态学处理二值图形态学基本算子二值图连通分量提取、区域标记二值图细化算法 灰度图形态学处理灰度图形态学基本算子灰度图形态学梯度灰度图 tophat 算法 形态学处理 二值图形态学处理 二值图形态学基本算子 二值图形态学图像处理通常在目标图像中…

JavaBean是什么?

Bean的本意为豌豆、子实&#xff0c;在这里引申为一种实体。JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean&#xff0c;类必须是具体的和公共的&#xff0c;并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性&#xff0…

11.图像边缘检测的原理与实现

数字图像处理(19): 边缘检测算子(Roberts算子、Prewitt算子、Sobel算子 和 Laplacian算子) 数字图像处理(20): 边缘检测算子(Canny算子) 1.边缘检测介绍 1.1 边缘检测的基本原理 边缘是图像的基本特征&#xff0c;所谓的边缘就是指的图像的局部不连续性。灰度或者结构等信息的…

ROS 2边学边练(10)-- 过程记录及回放

概念 通过将ROS执行过程中的主题数据持续记录下来&#xff08;到一个数据库中&#xff09;&#xff0c;后期我们就可以重复该过程&#xff0c;同时也能分享给其他同事和朋友&#xff0c;以帮助分析问题或纯粹分享喜悦&#xff08;独乐乐不如众乐乐嘛&#xff09;。我们今天的主…

Linux安装Tomcat保姆级教程

文章目录 前言一、安装JDK二、Tomcat下载三、Tomcat安装1.创建Tomcat的安装目录2.切换到Tomcat的安装目录3.上传Tomcat安装包4.解压缩5.切换到安装好的tomcat的bin目录6.启动tomcat7.网络请求测试 四、外部电脑访问nginx设置方法一&#xff1a;关闭防火墙方法二&#xff1a;添加…

网络升级固件

资源信息 可知 &#xff1a; install\soc_cv1800b_milkv_duo_sd\boot.sd文件较设备中的同名文件多了128个字节的文件头&#xff1b;install\soc_cv1800b_milkv_duo_sd\rawimages\boot.sd文件与设备中同名文件相同&#xff1b; 环境搭建 服务器 启动TFTP服务 安装TFTP服务器…

UGUI 进阶

UI事件监听接口 目前所有的控件都只提供了常用的事件监听列表 如果想做一些类似长按&#xff0c;双击&#xff0c;拖拽等功能是无法制作的 或者想让Image和Text&#xff0c;RawImage三大基础控件能够响应玩家输入也是无法制作的 而事件接口就是用来处理类似问题 让所有控件都…

RT-Thread(RTT)如何添加静态库.a文件

一、在libraries目录下新建文件夹 二、名字根据要添加的静态库文件而定&#xff0c;我这里叫做AGMAlgo&#xff0c;这是一个算法库 三、在文件里再新建两个文件夹&#xff0c;一个叫做inc用来存放静态库的头文件&#xff0c;另一个叫做libs用来存放静态库的.a文件 四、就像这样…

因子数据预处理-去极值和标准化

一. 去极值 因子数据中过大或过小的值会影响分析结果&#xff0c;特别是在回归时&#xff0c;离群值会严重影响因子和收益率之间的相关性估计结果。 因子去极值的处理方法&#xff1a; 确定上下限将上下限外的数据修改为上下限值 常见的去极值方法有三种&#xff0c;分别是…

QT使用数据库

数据库就是保存数据的文件。可以存储大量数据&#xff0c;包括插入数据、更新数据、截取数据等。用专业术语来说&#xff0c;数据库是“按照数据结构来组织、存储和管理数据的仓库”。 什么时候需要数据库&#xff1f;在嵌入式里&#xff0c;存储大量数据&#xff0c;或者记录数…

【已解决】Out of memory interning an attribute name

问题描述&#xff1a;pycharm运行程序时报错 Out of memory interning an attribute name 原因分析&#xff1a;pycharm预设内存不足 解决办法&#xff1a;打开pycharm文件所在位置&#xff0c;打开pycharm64.exe.vmoptions配置文件&#xff0c;调整Xmx的大小。

关系(二)利用python绘制热图

关系&#xff08;二&#xff09;利用python绘制热图 热图 &#xff08;Heatmap&#xff09;简介 热图适用于显示多个变量之间的差异&#xff0c;通过颜色判断彼此之间是否存在相关性。 快速绘制 基于seaborn import seaborn as sns import pandas as pd import numpy as np i…

【JavaSE】解密 继承和多态(下)

前言 紧接着上篇 解密继承和多态&#xff08;上&#xff09;~ 欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 前言 protected关键字 在同一包下同一类可以访问 代码理解 在同一包下不同类可以访问 代码理解 …

【性能测试】接口测试各知识第1篇:接口测试,学习目标【附代码文档】

接口测试完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;接口测试&#xff0c;学习目标学习目标,2. 接口测试课程大纲,3. 接口学完样品,4. 学完课程,学到什么,5. 参考:,1. 理解接口的概念。学习目标&#xff0c;RESTFUL1. 理解接口的概念,2.什么是接口测试…