【总结】动态规划

线性dp

LeetCode题单, 从记忆化搜索到递推
Pre:
从最初状态到最终状态等价,那么从最终状态开始和最初状态开始结果一样。
递归时不会产生其他负面结果,即无论何时进入递归,只要递归参数相同,结果就相同。
那么可采用数组记忆递归结果,若有重复进入递归状态则直接返回结果。

Pipeline:

  1. 确定dfs 代表的含义, 从最终状态开始
  2. 确定递归出口
  3. 写dfs 转移表达式
  4. 翻译为递推, 递归出口即为初始条件, dfs 转移表达式 即为 状态转移方程

时间复杂度: 单个状态 乘以 计算当前单个状态所需要的时间

爬楼梯 https://leetcode.cn/problems/climbing-stairs/

使用最小花费爬楼梯 https://leetcode.cn/problems/min-cost-climbing-stairs/

class Solution {
public:// dfs(i) 第n个台阶所需要的最小花费// dfs(i) = min(dfs(i - 1) + nums[i - 1], dfs(i - 2) + nums[i - 2]);vector <int> f;int dfs(vector<int>& cost, int n){if(n <= 1) return 0;if(f[n] != -1) return f[n];return f[n] = min(dfs(cost, n - 1) + cost[n - 1], dfs(cost, n - 2) + cost[n - 2]);}int minCostClimbingStairs(vector<int>& cost) {int n = cost.size();f.resize(n + 1, -1);return dfs(cost, cost.size());}
};
class Solution {
public:// dfs(i) 第n个台阶所需要的最小花费// dfs(i) = min(dfs(i - 1) + nums[i - 1], dfs(i - 2) + nums[i - 2]);vector <int> f;int minCostClimbingStairs(vector<int>& cost) {int n = cost.size();f.resize(n + 1, 0);f[0] = 0, f[1] = 0;for(int i = 2;i <= n;i ++){f[i] = min(f[i - 1] + cost[i - 1], f[i - 2] + cost[i - 2]);}return f[n];}
};

空间优化,当前状态只和前一两个状态有关,优化到O(1)

class Solution {
public:// dfs(i) 第n个台阶所需要的最小花费// dfs(i) = min(dfs(i - 1) + nums[i - 1], dfs(i - 2) + nums[i - 2]);int minCostClimbingStairs(vector<int>& cost) {int n = cost.size();int f0 = 0, f1 = 0, newF = 0;for(int i = 2;i <= n;i ++){newF = min(f1 + cost[i - 1], f0 + cost[i - 2]);f0 = f1;f1 = newF;}return f1;}
};
  1. 组合总和 Ⅳ https://leetcode.cn/problems/combination-sum-iv/
class Solution {
public:vector <int> f;int dfs(int i, vector<int>& nums){if(i == 0) return 1;if(f[i] != -1) return f[i];int res = 0;for(auto x: nums){if(x <= i){res += dfs(i - x, nums);}}return f[i] = res;}int combinationSum4(vector<int>& nums, int target) {f.resize(1005, -1);return dfs(target, nums);}
};
class Solution {
public:int combinationSum4(vector<int>& nums, int target) {vector <unsigned > f(target + 1);f[0] = 1;for(int i = 1;i <= target;i ++){for(auto x : nums) {if(i >= x){f[i] += f[i - x];}}}return f[target];}
};
  1. 统计构造好字符串的方案数 https://leetcode.cn/problems/count-ways-to-build-good-strings/

  2. 统计打字方案数 https://leetcode.cn/problems/count-number-of-texts/

  3. 删除并获得点数 https://leetcode.cn/problems/delete-and-earn/

  4. 打家劫舍 II https://leetcode.cn/problems/house-robber-ii/

LCR 166. 珠宝的最高价值 https://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof/

01背包和完全背包

多维dp

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

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

相关文章

RabbitMQ中的异步Confirm模式:提升消息可靠性的利器

在现代分布式系统中&#xff0c;消息队列&#xff08;Message Queue&#xff09;扮演着至关重要的角色&#xff0c;它能够解耦系统组件、提高系统的可扩展性和可靠性。RabbitMQ作为一款广泛使用的消息队列中间件&#xff0c;提供了多种机制来确保消息的可靠传递。其中&#xff…

买卖预测工具

设计一个用于在交易市场中寻找确定性或大概率盈利的买卖预测工具是一个具有挑战性但非常有潜力的项目。你可以通过以下几个步骤进行思路规划&#xff1a; 1. 明确目标 大概率盈利&#xff1a;工具的目的是找出大概率盈利的交易机会。不能完全依赖于100%确定性&#xff0c;因为…

【数据结构】数据结构简要介绍

数据结构是计算机科学中用于组织、管理和存储数据的方式&#xff0c;以便于高效地访问和修改数据。 数据结构的分类&#xff1a; 数据结构可以大致分为两类&#xff1a;线性结构和非线性结构。 1. 线性结构 线性结构中的数据按顺序排列&#xff0c;每个元素有唯一的前驱和后…

note 41:账务系统开发规范

目录 系统设计 防重控制 流量控制 并发控制 异常处理 备份机制 系统开发​​​​​​​ 前端队列操作 外系统交互 ​​​​​​​​​​​​​​ 系统设计 防重控制 对于进入到系统中的数据&#xff08;文件导入、手工录入、系统直连等&#xff09;以及本系统发往外…

Circular Spanning Tree(树的性质)

Circular Spanning Tree 本道题目加深理解树的性质&#xff1a; 思路&#xff1a; 首先考虑什么情况是NO&#xff0c;那么不难想当字符串全是0的时候一定是不行的&#xff0c;因为这样就构成环了&#xff0c;还有一种情况是1的个数为奇数的时候是不行的&#xff0c;一棵树中为…

linux安装nginxs报错:openssl not found

系统&#xff1a; linux 版本&#xff1a;centOS7 nginx版本&#xff1a;nginx-1.20.2 linux安装nginx时 执行下面命令时报错&#xff1a; ./configure --with-http_stub_status_module --with-http_ssl_module --prefix/usr/local/nginxchecking for OpenSSL library ... not …

【论文笔记】Contrastive Learning for Sign Language Recognition and Translation

&#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&#xff0c;为生民立命&#xff0c;为往圣继绝学&#xff0c;为万世开太平。 基本信息 标题: Contrastive Learning for…

docker redis安装

一.镜像拉取 docker pull redis:5.0新建文件 touch /home/redis/redis.conf touch /home/redis/redis_6379.pid # bind 192.168.1.100 10.0.0.1 # bind 127.0.0.1 ::1 #bind 127.0.0.1protected-mode noport 6379tcp-backlog 511requirepass roottimeout 0tcp-keepali…

【CSS in Depth 2 精译_096】16.4:CSS 中的三维变换 + 16.5:本章小结

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第五部分 添加动效 ✔️【第 16 章 变换】 ✔️ 16.1 旋转、平移、缩放与倾斜 16.1.1 变换原点的更改16.1.2 多重变换的设置16.1.3 单个变换属性的设置 16.2 变换在动效中的应用 16.2.1 放大图标&am…

小程序租赁系统开发的优势与实践探索

内容概要 小程序租赁系统开发正在引起广泛关注&#xff0c;特别是在数字化快速发展的今天。很多企业开始意识到&#xff0c;小程序不仅能为他们带来更多的客户&#xff0c;还能极大地提高管理效率。借助小程序&#xff0c;用户在租赁时可以更加方便地浏览和选择产品&#xff0…

机器人C++开源库The Robotics Library (RL)使用手册(二)

由于RL库采用跨平台CMake源码,可以轻松在win、ubantu等平台部署、编译,win通常用VS编译器,为了便于使用、阅读,需要将CMake编译成VS工程。 1、准备三个工具:CMake、VS、QT 为了在Windows上编译RL和依赖项,您需要安装一个编译器(例如。,Visual Studio 2017)和跨平台构…

如何在LabVIEW中更好地使用ActiveX控件?

在LabVIEW中&#xff0c;ActiveX控件可以帮助实现与其他应用程序或第三方组件的集成&#xff08;例如Microsoft Excel、Word、Internet Explorer等&#xff09;。以下是一些建议&#xff0c;帮助您更好地在LabVIEW中使用ActiveX控件&#xff1a; ​ 1. 理解ActiveX控件的基本原…

如何使用Python从SACS结构数据文件中提取节点数据信息并导出到EXCEL

在现代工程设计中&#xff0c;结构分析和数据处理是不可或缺的一部分。特别是在海洋工程、桥梁建设等领域&#xff0c;SACS文件被广泛应用。这种文件格式包含了结构模型的各种重要信息&#xff0c;包括节点&#xff08;JOINT&#xff09;、构件&#xff08;ELEMENT&#xff09;…

如何判断一个学术论文是否具有真正的科研价值?ChatGPT如何提供帮助?

目录 1.创新性与学术贡献的超级加分✔ 2.科研过程中的各个环节—从0到1✔ 3.创新性与理论深度的完美结合✔ 4.论证与写作的清晰性✔ 5.数据整理和文献回顾——效率与精准并存✔ 6.创新性要求辅助✔ 总结 宝子们&#xff0c;学术论文写作的旅程是不是感觉像是走进了迷雾森…

学习threejs,THREE.CircleGeometry 二维平面圆形几何体

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.CircleGeometry 圆形…

【微服务】SpringBoot 自定义消息转换器使用详解

目录 一、前言 二、SpringBoot 内容协商介绍 2.1 什么是内容协商 2.2 内容协商机制深入理解 2.2.1 内容协商产生的场景 2.3 内容协商实现的常用方式 2.3.1 前置准备 2.3.2 通过HTTP请求头 2.3.2.1 操作示例 2.3.3 通过请求参数 三、SpringBoot 消息转换器介绍 3.1 H…

深入理解Composer自动加载机制

Composer是PHP生态系统中最常用的依赖管理工具之一&#xff0c;它不仅能够帮助开发者管理项目的依赖关系&#xff0c;还能够自动加载这些依赖项。自动加载机制是Composer的核心功能之一&#xff0c;通过自动加载&#xff0c;开发者可以在运行时按需加载所需的类和文件&#xff…

【游戏设计原理】35 - 委员会设计

一、 分析并总结 核心内容 定义&#xff1a;委员会设计&#xff08;Design by Committee&#xff09;是指游戏开发团队通过集体协作完成设计&#xff0c;这种模式结合了多样化的创意和个体专长&#xff0c;但也可能因缺乏一致性而导致设计的混乱。优势&#xff1a;多样性带来…

【Java】IO流练习

IO流练习 题干&#xff1a; 根据指定要求&#xff0c;完成电话记录、 注册、登录 注册 题干&#xff1a; 完成【注册】功能&#xff1a; 要求&#xff1a; 用户输入用户名、密码存入users.txt文件中 若users.txt文件不存在&#xff0c;创建该文件若users.txt文件存在 输入…

内网学习:工作组用户与权限

目录 一、本地用户组介绍本地工作组介绍用户与组的关系 二、四种用户类型及权限比较本地系统最高权限&#xff08;System账户&#xff09;特性Administrator与System账户的区别 本地最高管理员&#xff08;Administrator用户&#xff09;特性 本地普通管理员特性 本地普通用户特…