算法刷题-动态规划3(未完待续---------

算法刷题-动态规划3)

  • 01背包问题
  • 最后一块石头的重量

01背包问题

一篇文章吃透背包问题
大佬讲解什么是背包问题

问题分析:
面对这么多的物品,
选择一个个地来装入背包,背包的承重量不断地增加,二维数组中,列为物品i,行为背包的承重量)。
当物品 i 的重量大于背包当前的总承重时,该物品不能放入背包;
当物品 i 的重量小于背包的总承重时,我们就要进行对比,前面 i - 1个物品所带来的价值和现在要取出背包中
的一部分物品用来存放物品i带来的价值,哪个更大?(取出多少呢,当然是刚好能放下物品 i 的重量,即w[i]),
把更大的那个价值对当前背包价值进行更新。

在这里插入图片描述
在这里插入图片描述

  • arr[ i ][ j ] = max(arr[ i - 1 ][ j ], arr[ i - 1][ j - w[ i ] ] + v[ i ])
    在这里插入图片描述
for(int i=1;i<=n;i++)//物品i 
{for(int j=1;j<=c;j++)//重量j {if(j>=w[i]){arr[i][j]=max(arr[i-1][j],arr[i-1][j-w[i]]+v[i]);	}else arr[i][j]=arr[i-1][j];}
}public static int knapsack(int[] C, int[] W, int V, int N) {// 初始化dp数组,dp[i][j]表示前i个物品,背包容量为j时的最大价值int[][] dp = new int[N + 1][V + 1];// 当背包容量为0时,无论有多少物品,最大价值都为0for (int i = 0; i <= N; i++) {dp[i][0] = 0;}// 当没有物品可选时,无论背包容量有多少,最大价值都为0for (int j = 0; j <= V; j++) {dp[0][j] = 0;}// 填充dp数组,从前往后遍历每个物品,从小到大遍历背包容量for (int i = 1; i <= N; i++) {for (int j = 1; j <= V; j++) {// 如果当前物品的重量小于等于背包容量,可以考虑将其放入背包if (j >= W[i - 1]) {// 如果放入当前物品,可以得到的最大价值比不放入当前物品的最大价值更高,则放入当前物品dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - W[i - 1]] + C[i - 1]);} else {// 如果当前物品的重量大于背包容量,无法放入背包,最大价值等于上一个物品的最大价值  dp[i][j] = dp[i - 1][j];  }}}// 返回最大价值,即dp[N][V]  return dp[N][V];  
}

分割等和子集

(待回顾和复习)美好的一天从每日一题开死
在这里插入图片描述

题目讲解

class Solution {//看不懂先去看二维数组解法public boolean canPartition(int[] nums) {int len=nums.length;  int sum=0;  for(int i=0;i<len;i++){  sum+=nums[i];  }if(sum%2!=0) return false;  //背包容量为总和的一半  int target=sum/2;  //dp[j]:容量为j时可放入物品的最大价值  int[] dp=new int[target+1];  for(int i=0;i<len;i++){  for(int j=target;j>=nums[i];j--){  dp[j]=Math.max(dp[j],dp[j-nums[i]]+nums[i]);  }}return dp[target]==target;  }
}

最后一块石头的重量

在这里插入图片描述

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

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

相关文章

【Linux】探索进程的父与子

目录 1.获取进程PID1.1进程PPID 2.通过系统调用创建进程-fork初识2.1为什么fork函数要给子进程返回0&#xff0c;给父进程返回pid&#xff1f;fork函数如何做到返回两次的&#xff1f;fork干了什么事情&#xff1f;怎么理解一个变量为什么有两个不同的值&#xff1f;如果父子进…

投标文件的胶装和封装以及注意事项

投标文件最后的胶装和封装的时间我们需要做的内容: 1.制作签字页码表&#xff08;法人签字有几处&#xff0c;页码11,12,13,89,678&#xff0c;代理人签字有几处&#xff0c;页码11,12,13,89,678 &#xff09;&#xff0c;目的为后期签字做准备。【关注首页&#xff0c;一般也…

【面试HOT200】滑动窗口篇

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了秋招面试的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于【CodeTopHot200】进行的&#xff0c;每个知识点的修正和深入主要参…

Bitcoin SV 和 Bitcoin Core 之间首次跨链原子交换

我们已经执行了 Bitcoin SV 和 Bitcoin Core 之间的首次原子交换。 这一成就代表了比特币 SV 的重大进步&#xff0c;以去信任的方式促进了与其他区块链的无缝互操作性。 图片源自Gemini 在上一篇文章中&#xff0c;我们解释了原子交换的高级理论。 我们深入研究了使用哈希时间…

c++ opencv使用drawKeypoints、line实现特征点的连线显示

前言 图像经过算子处理后得到若干特征点&#xff0c;使用opencv进行渲染显示出这些特征点并且连线&#xff0c;更直观的对比处理前后的一些差异性 demo核心代码 //画出特征点并连线 void drawFilterLinePoints(cv::Mat& srcMat, cv::Point2f pointStart, cv::Point2f po…

程序员接私活平台有哪些?这8大程序员兼职平台让你收入直接翻倍!

接私活 对程序员这个圈子来说是一个热门话题&#xff0c;不说全部&#xff0c;应该大多数程序员都有过想要接私活的想法&#xff0c;但是很少有人在公开场合讨论私活的问题&#xff0c;似乎都在避嫌。就跟有人下班后跑滴滴一样&#xff0c;程序员私有时间接点活挣点钱不也很正常…

修改分区序列号的简单方法!

“我使用的是自己组装的电脑&#xff0c;安装了正版Win10操作系统。但奇怪的是&#xff0c;这台电脑看起来完全正常&#xff0c;但是每次启动时的分区序列号却总是不同。我现在要使用的软件需要依赖分区序列号进行注册&#xff0c;所以这个问题不解决我就没法使用软件。系统是正…

【机器视觉技术】:开创人工智能新时代

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; IT杂谈 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1; 前言&#x1f324;️ 机器视觉技术的实现☁️ 图像采集☁️ 图像处理☁️ 数据建模☁️应用展示…

掌握你的Mac,iStat Menus带你了解mac系统状态

iStat Menus for mac是一款强大的mac系统状态监控工具&#xff0c;它能够提供实时的系统信息和性能监测&#xff0c;帮助用户全面了解和管理自己的Mac设备。无论是CPU、内存、网络、硬盘还是传感器数据&#xff0c;iStat Menus都能直观地展示&#xff0c;并且支持自定义布局和样…

仿东郊到家预约按摩小程序开发;

在这个快节奏的现代社会&#xff0c;人们对便捷、高效的服务需求日益增大。正因如此&#xff0c;到家预约系统上门按摩小程序应运而生&#xff0c;它结合了互联网技术和传统按摩服务&#xff0c;不仅满足了人们对便捷按摩服务的需求&#xff0c;还为商家提供了全新的商业价值。…

Glide结合OkHttp保证短信验证接口携带图形验证码接口返回Cookie值去做网络请求

一、实现效果 二、步骤 注意&#xff1a;仅展示核心部分代码 1、导入依赖 api com.github.bumptech.glide:glide:4.10.0 kapt com.github.bumptech.glide:compiler:4.10.0 api com.squareup.okhttp3:okhttp:3.11.0 api com.squareup.okhttp3:logging-interceptor:3.11.02、自…

做项目,要从学生思维里跳出来

今天分享下在23期群的聊天记录&#xff0c;关于做项目正确的思维&#xff0c;自己曾经走过一些弯路&#xff0c;希望大家能Get到。 做项目&#xff0c;一定要从学生思维里跳出来。 1.学生思维就是前期就想每个细节都要搞懂&#xff0c;感觉才能往下&#xff0c;其实像lora&…

我的CSDN创作纪念日

⭐前言 同志们&#xff0c;大家好&#xff01;我是乱码怪才&#xff0c;这篇博客我来分享一下我和CSDN的故事————一个人工智能学生和CSDN的相遇。 &#x1f496;相遇CSDN&#x1f496; 我在刚上大学的时候就下载了CSDN&#xff0c;那时候只是在平台上搜一些C语言的算法题…

基于可穿戴的健康监护终端--研究进展报告

基于可穿戴的健康监护终端--研究进展报告 1 引言2 传感器介绍2.1 呼吸速率传感器2.2 温度传感器2.3 心脏跳动传感器 3 论文介绍3.1 Effective Data Decision-Making and Transmission System Based on Mobile Health for Chronic Disease Management in the Elderly3.2 Design …

代码随想录算法训练营 ---第四十六天

第一题&#xff1a; 简介&#xff1a; 本题的重点在于确定背包容量和物品数量 确定dp数组以及下标的含义 dp[i] : 字符串长度为i的话&#xff0c;dp[i]为true&#xff0c;表示可以拆分为一个或多个在字典中出现的单词。 2.确定递推公式 如果确定dp[j] 是true&#xff0c;且…

C语言结构体数组实现一个简单的登录注册功能

实现登录注册 登录功能&#xff1a;设计了一个结构体数组用来记录系统中所存在的人。首先设置了一个管理员身份的存放在第一行。登录的时候首先判断账号是否存在于数组当中。进行遍历数组中的所有元素的操作来进行查询&#xff0c;若是可以查询到那么就可以来判断他的密码是否…

AI Agent应用落地前半场,属于企服软件厂商推出的平台级AI智能体

GPTs大受欢迎但问题多&#xff0c;企服厂商的AI Agent更被B端客户器重 比尔盖茨预言智能体是下个平台&#xff0c;超自动化平台的AI Agent更靠谱&#xff1f; 以GPTs为代表的AI Agent只是玩具&#xff1f;揭秘真实可用AI智能体长什么样 AI Agent应用落地前半场&#xff0c;属…

力扣hot100 最大子数组和 动态规划 分治 无后效性 子问题划分

&#x1f468;‍&#x1f3eb; 题目地址 无后效性 为了保证计算子问题能够按照顺序、不重复地进行&#xff0c;动态规划要求已经求解的子问题不受后续阶段的影响。这个条件也被叫做「无后效性」。换言之&#xff0c;动态规划对状态空间的遍历构成一张有向无环图&#xff0c;遍…

SRGAN 使用指南:将低分辨率图像转换为高分辨率图像

SRGAN、ESRGAN、Real-ESRGAN 使用指南 SRGAN网络结构优化目标 ESRGANReal-ESRGAN SRGAN 超分辨率&#xff1a;从低分辨率(LR)图像来估计其对应高分辨率(HR)图像的任务&#xff0c;被称作超分辨率(SR)。 SRGAN 图像超分辨率的深度学习模型&#xff0c;通过生成对抗网络&#x…