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

代码随想录算法训练营第四十二天 | 卡码网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 和 Nint 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,初始值为0vector<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.hqwc.cn/news/587348.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iOS系统文件路径解析:探索苹果手机中各类重要文件的存储位置

​ 目录 引言 用户登录工具和连接设备 查看设备信息&#xff0c;电池信息 查看硬盘信息 硬件信息 查看 基带信息 销售信息 电脑可对手机应用程序批量操作 运行APP和查看APP日志 IPA包安装测试 注意事项 引言 苹果手机与安卓手机不同&#xff0c;无法直接访问系统文件…

通过Telnet访问网络设备

要通过 Telnet 访问网络设备&#xff0c;需要通过Console端口对网络设备进行基本配置&#xff0c;例如&#xff0c;IP地址、子网掩码、用户名和登录密码等。本实验以路由器为例&#xff0c;交换机远程管理只是接口名字不同而已&#xff0c;路由器用物理接口&#xff0c;交换机用…

医院信息化管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)挂号信息,问诊记录,科室管理,药房管理,医生管理,医院情况

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文&#xff08;设计&#xff09;学生选题参考合集推荐收藏&#xff08;包含Springboot、jsp、ssmvue等技术项目合集&#xff09; 1. 系统功能…

梵宁教育:助力个人发展和职业规划

梵宁教育一直以来都致力于帮助职场新人提升各种技能&#xff0c;使他们能够更快地适应职场环境&#xff0c;展现自己的才华。在设计技能方面&#xff0c;梵宁教育同样有着丰富的经验和独特的教学方法。以下是一些梵宁教育为职场新人提供的设计技能提升小技巧。 首先&#xff0c…

最新AI智能系统ChatGPT网站源码V6.3版本,GPTs、AI绘画、AI换脸、垫图混图+(SparkAi系统搭建部署教程文档)

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧。已支持GPT…

蓝桥杯真题Day44 倒计时10天 练了六道真题 !

[蓝桥杯 2020 省 B2] 平面切分 题目描述 平面上有 N 条直线, 其中第 i 条直线是 yAi​⋅xBi​ 。请计算这些直线将平面分成了几个部分。 输入格式 第一行包含一个整数 N。 以下 N 行, 每行包含两个整数 Ai​,Bi​。 输出格式 一个整数代表答案。 代码表示 #include<…

RESTful规范总结

概念&#xff1a;RESTful&#xff08;Representational State Transfer 的缩写&#xff09;是一种广泛使用的API架构风格。 1.资源&#xff1a;在REST API的设计中&#xff0c;首先需要面向资源建模&#xff0c;其中每个节点是是一个简单资源或集合资源。 1.1一个集合包含相同…

深入理解ThreadLocal原理

目录 1- 什么是ThreadLocal &#xff1f;2- ThreadLocal的作用&#xff1f;ThreadLocal实现线程间资源隔离ThreadLocal实现线程内资源共享 3- ThreadLocal 原理3-1 ThreadLocalMap3-2 ThreadLocalMap的扩容&#x1f511;1. 为什么会发生扩容&#xff1f;&#x1f511;2. Thread…

开源AGV调度系统OpenTCS中的任务分派器(dispatcher)详解

OpenTCS中的任务分派器dispatcher详解 1. 引言2. 任务分派器(dispatcher)2.1 默认的停车位置选择2.2 可选停车位置属性2.3 默认的充电位置选择2.4 即时运输订单分配 3. 默认任务分派器的配置项4. 参考资料与源码 1. 引言 openTCS是一项著名的开源运输控制系统&#xff0c;我在…

CSS面试题---基础

1、css选择器及优先级 选择器优先级&#xff1a;内联样式>id选择器>类选择器、属性选择器、伪类选择器>标签选择器、微元素选择器 注意&#xff1a; !important优先级最高&#xff1b; 如果优先级相同&#xff0c;则最后出现的样式生效&#xff1b; 继承得到的样式优先…

【PowerDesigner】PGSQL反向工程过程已中断

问题 反向工程过程已中断,原因是某些字符无法通过ANSI–&#xff1e;UTF-16转换进行映射。pg导入sql时报错&#xff0c;一查询是power designer 反向工程过程已中断&#xff0c;某些字符无法通过ANSI–>UTF-16转换进行映射&#xff08;会导致数据丢失&#xff09; 处理 注…

Java基础习题练习

1、编写程序&#xff0c;判断给定的某个年份是否是闰年。 闰年的判断规则如下&#xff1a; &#xff08;1&#xff09;若某个年份能被4整除但不能被100整除&#xff0c;则是闰年。 &#xff08;2&#xff09;若某个年份能被400整除&#xff0c;则也是闰年。 /*** 1&#xff0c…