day-41 代码随想录算法训练营(19)动态规划 part 03

343.整数拆分

思路:
  • 1.dp存储的是第i个数,拆分之后最大乘积
  • 2.dp[i]=max(dp[i],max(j*(i-j),j*dp[i-j]));
  • 3.初始化:dp[0]=dp[1]=0,dp[2]=1;
  • 4.遍历顺序:外层循环 3-n,内层循环 1-i

2.涉及两次取max:

  • dp[i] 表示拆开的最大乘积,因为涉及多次计算
  • j*(i-j) 表示拆成两个数
  • j*dp[i-j] 表示拆成两个以上的数(dp[i-j] 就是剩下没拆的数,拆开的最大乘积)
class Solution {
public:int integerBreak(int n) {vector<int>dp(n+1,0);dp[2]=1;for(int i=3;i<=n;i++){for(int j=1;j<i;j++){dp[i]=max(dp[i],max(j*(i-j),j*dp[i-j]));cout<<i<<" "<<dp[i]<<endl;}}return dp[n];}
};

96.不同的二叉搜索树 

分析:1-n有几种二叉搜索树
  • 1.以1-n每个数为根节点
  • 2.判断根节点左边和右边各有几个节点,只有结点数相同,组合的二叉搜索树种数就是一样的。

思路:

  • 1.dp存储n个节点有多少种二叉搜索树
  • 2.dp[i]=dp[i-1]*dp[n-i];
  • 3.初始化:dp[0]=dp[1]=1,dp[2]=2;
  • 4.遍历顺序:3-n

416.分割等和子集

分析:
  • 数组要求分成两个等和子集,所以一定要有子集和为总和的一半
  • 转换为:在集合中找数字,看能否组合成总和的一半值的子集
  • 转换为:在总和一半容量的背包里,寻找子集刚好装满
思路一:

1.dp存储:容量为 j 时,装入物品的最大值

2.dp [ j ] =max ( dp [ j ] ,dp [ j - nums [i] ] + nums [ i ] )

3.初始化:所有值初始化为0

4.遍历顺序:外层遍历数字(顺序,物品),内层遍历数字(倒序,背包容量)

class Solution {
public:bool canPartition(vector<int>& nums) {int total=0;for(auto it:nums) total+=it;//求出总和if(total%2!=0) return false;//过滤不可拆成两半的情况int target=total/2;//背包容量vector<int>dp(10001,0);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]);//dp[j] 是不装当前物品//dp[j-nums[i]]+nums[i] 是装当前物品}}if(dp[target]==target) return true;//背包容量为target,装了target重的物品return false;}
};

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

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

相关文章

LLMs之Code:SQLCoder的简介、安装、使用方法之详细攻略

LLMs之Code&#xff1a;SQLCoder的简介、安装、使用方法之详细攻略 目录 SQLCoder的简介 1、结果 2、按问题类别的结果 SQLCoder的安装 1、硬件要求 2、下载模型权重 3、使用SQLCoder 4、Colab中运行SQLCoder 第一步&#xff0c;配置环境 第二步&#xff0c;测试 第…

【RPC 协议】序列化与反序列化 | lua-cjson | lua-protobuf

文章目录 RPC 协议gRPCJSON-RPC 数据序列化与反序列化lua-cjsonlua-protobuf RPC 协议 在分布式计算&#xff0c;远程过程调用&#xff08;英语&#xff1a;Remote Procedure Call&#xff0c;缩写为 RPC&#xff09;是一个计算机通信协议。该协议允许运行于一台计算机的程序调…

横向对比 npm、pnpm、tnpm、yarn 优缺点

前端工程化是现代Web开发中不可或缺的一环&#xff0c;它的出现极大地提升了前端开发的效率和质量。 在过去&#xff0c;前端开发依赖于手动管理文件和依赖&#xff0c;这导致了许多问题&#xff0c;如版本冲突、依赖混乱和构建繁琐等。而今&#xff0c;随着众多前端工程化工具…

常见项目管理中npm包操作总结

前言 我们在日常工作中&#xff0c;可能需要下载包、创建包、发布包等等。本篇推文将记录日常项目中关于npm包的操作。 引用包 npm仓库公开的包我们都可以通过npm install的命令进行引用下载。 而我们开发的业务公共组件需要在公司内部项目公共引用&#xff0c;而不希望公开为外…

洞察商机,驱动创新:智能数据分析引领企业发展

“五度易链”产业大数据解决方案由产业经济、智慧招商、企业服务、数据服务四大应用解决方案组成&#xff0c;囊括了产业经济监测、产业诊断分析、企业监测预警、企业综合评估、大数据精准招商、招商智能管理、企业管理、企业培育、企业市场服务、企业金融服务、产业数据开放服…

docker 安装xxljob

1. 安装mysql镜像 2.初始化xxljob的数据库和表 一、初始化db:https://codechina.csdn.net/mirrors/xuxueli/xxl-job/-/blob/2.3.1/doc/db/tables_xxl_job.sql 对脚本进行修改&#xff0c;添加ROW_FORMATDYNAMIC 安装xxljob 镜像 docker pull xuxueli/xxl-job-admin:2.3.1 …

双亲委派机制的作用

文章目录 类加载过程一、java有哪些类加载器&#xff1f;二、双亲委派机制自定义String类 总结 类加载过程 先简单说一下java的类加载器 类加载器&#xff0c;顾名思义就是一个可以将Java字节码加载为java.lang.Class实例的工具。这个过程包括&#xff0c;读取字节数组、验证…

[Android AIDL] --- AIDL工程搭建

0 AIDL概念 AIDL&#xff08;Android Interface Definition Language&#xff09;是一种 IDL 语言&#xff0c;用于生成可以在 Android 设备上两个进程之间进行进程间通信&#xff08;IPC&#xff09;的代码。 通过 AIDL&#xff0c;可以在一个进程中获取另一个进程的数据和调…

尚硅谷大数据项目《在线教育之离线数仓》笔记006

视频地址&#xff1a;尚硅谷大数据项目《在线教育之离线数仓》_哔哩哔哩_bilibili 目录 第11章 数仓开发之ADS层 P087 P088 P089 P090 P091 P092 P093 P094 P095 P096 P097 P098 P099 P100 P101 P102 P103 P104 P105 P106 P107 P108 P109 P110 P111 …

Layer 2盛夏已至,StarkNet如何实现价值跃迁?

作者&#xff5c;Jason Jiang Layer 2概念在2023年夏天迎来爆发。Coinbase、ConsenSys等加密巨头纷纷下场&#xff0c;其部署的原生L2解决方案Base、Linea在过去两个月内相继完成主网上线&#xff1b;被誉为L2 四大天王之一的StarkNet也在夏天顺利完成“量子跃迁”升级&#x…

HDFS 架构剖析

目录 一、HDFS 架构整体概述 二、HDFS 集群角色介绍 2.1 整体概述 2.2 主角色&#xff1a;namenode 2.3 从角色&#xff1a;datanode 2.4 主角色辅助角色&#xff1a; secondarynamenode 三、HDFS 重要特性 3.1 主从架构 3.2 分块存储机制 3.3 副本机制 3.4 …

抖音视频删了怎么在电脑上找回来

【昨天整理电脑文件时&#xff0c;不小心将剪辑好的抖音作品误删了&#xff0c;但是回收站中找不回来了&#xff0c;这些视频是我花了很多心血制作的&#xff0c;如果没了真的十分可惜&#xff01;希望大家能帮帮我&#xff0c;告诉我应该如何恢复这些文件。】 现在人们都喜欢…