当前位置: 首页 > news >正文

斐波那契模型系列【动态规划】

动态规划步骤

1、状态表示

是什么:dp表(可能是一维或二维数组)里的值所表示的含义。

怎么来:

1、题目要求

2、经验+题目要求

3、发现重复子问题

2、状态转移方程

dp[i]=...

3、初始化

保证填表不越界

4、填表顺序

5、返回值

写代码时,可以就按一下步骤:

1、创建dp表

2、初始化

3、填表

4、返回值 

5、可能会需要处理边界

一、第n个泰波那契数

 

class Solution {
public:int tribonacci(int n) {vector<int> dp(n+1);if(n==0) return 0;if(n==1||n==2) return 1;dp[0] = 0,dp[1] = 1,dp[2] = 1;for(int i = 3;i <= n;i++){dp[i] = dp[i-1] + dp[i-2] + dp[i-3];}return dp[n];}
};

空间优化------滚动数组

将abcd向后平移。 

class Solution {
public:int tribonacci(int n) {if(n==0) return 0;if(n==1||n==2) return 1;int a = 0,b = 1,c = 1,d;for(int i = 3;i <= n;i++){d = a+b+c;a = b;b = c;c = d;}return d;}
};

二、三步问题 

 

取模问题:每做一次加法就要做一次取模

class Solution {
public:int waysToStep(int n) {vector<int> dp(n+1);const int MOD = 1e9+7;if(n == 1||n == 2) return n;if(n == 3) return 4;dp[1] = 1,dp[2] = 2,dp[3] = 4;for(int i = 4;i <= n;i++){dp[i] = ((dp[i-1]+dp[i-2])%MOD+dp[i-3])%MOD;}return dp[n];}
};

三、最小花费爬楼梯

注意:楼顶是最后一个台阶的下一个位置。

 

class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {int n = cost.size();vector<int> dp(n + 1);dp[0] = dp[1] = 0;for(int i = 2;i <= n;i++){dp[i] = min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);}return dp[n];}
};

 四、解码方法

 注意:dp[i-1]和dp[i-2]是解密成功才加的。

优化版初始化(更好处理边界)

把数组统一往后移一位,开多一位 。

class Solution {
public:int numDecodings(string s) {int n = s.size();vector<int> dp(n + 1);dp[0] = 1;dp[1] = s[0] != '0';for(int i = 2;i <= n;i++){if(s[i-1] != '0') dp[i] += dp[i-1];int t = (s[i-2]-'0')*10 + s[i-1]-'0';if(t <= 26 && t >= 10) dp[i] += dp[i-2];           }return dp[n];}
};

相关文章:

斐波那契模型系列【动态规划】

动态规划步骤 1、状态表示 是什么&#xff1a;dp表&#xff08;可能是一维或二维数组&#xff09;里的值所表示的含义。 怎么来&#xff1a; 1、题目要求 2、经验题目要求 3、发现重复子问题 2、状态转移方程 dp[i]... 3、初始化 保证填表不越界 4、填表顺序 5、返回值 写代码时…...

【Java】微服务——Nacos注册中心

目录 1.Nacos快速入门1.1.服务注册到nacos1&#xff09;引入依赖2&#xff09;配置nacos地址3&#xff09;重启 2.服务分级存储模型2.1.给user-service配置集群2.2.同集群优先的负载均衡 3.权重配置4.环境隔离4.1.创建namespace4.2.给微服务配置namespace 5.Nacos与Eureka的区别…...

Redis Cluster Gossip Protocol: PING, PONG, MEET

返回目录 PING / PONG / MEET 的发送 过程 计算freshNodes。freshNodes表示在消息中能携带的&#xff0c;在cluster节点字典中的节点总数&#xff0c;但需要减去myself和对端节点&#xff0c;因为myself的信息会存储在消息头中。实际上&#xff0c;并非所有在cluster节点字典…...

httpserver 下载服务器demo 以及libevent版本的 httpserver

实现效果如下&#xff1a; 图片可以直接显示 cpp h 这些可以直接显示 其他的 则是提示是否要下载 单线程 还有bug 代码如下 先放上来 #include "httpserver.h" #include "stdio.h" #include <stdlib.h> #include <arpa/inet.h> #include…...

构建强大的RESTful API:@RestController与@Controller的对比与应用

构建强大的RESTful API&#xff1a;RestController与Controller的对比与应用 前言什么是RESTful APIRestController&#xff0c;Controller&#xff0c;ResponseBody1. Controller注解&#xff1a;2. RestController注解&#xff1a;3. ResponseBody注解&#xff1a; 示例非thy…...

【Java-LangChain:使用 ChatGPT API 搭建系统-10】评估(下)-当不存在一个简单的正确答案时

第十章&#xff0c;评估&#xff08;下&#xff09;-当不存在一个简单的正确答案时 在上一章中&#xff0c;了解了如何评估 LLM 模型在 有明确正确答案 的情况下的输出&#xff0c;我们可以编写一个函数来判断 LLM 输出是否正确地分类并列出产品。 然而&#xff0c;如果 LLM …...

【微服务的集成测试】python实现-附ChatGPT解析

1.题目 微服务的集成测试 知识点:深搜 时间限制: 1s 空间限制: 256MB 限定语言:不限 题目描述: 现在有n个容器服务,服务的启动可能有一定的依赖性 (有些服务启动没有依赖)其次服务自身启动加载会消耗一些时间。 给你一个 nxn 的二维矩阵 useTime,其中 useTime[i][i]=10 表示…...

Mesa新版来袭

Mesa 17.1.6 发布了&#xff0c;Mesa 是一个三维&#xff08;3D&#xff09;图形库的开源集合&#xff0c;其主要目标是在 Linux / UNIX 操作系统下实现各种 API&#xff08;应用程序编程接口&#xff09;和 OpenGL 规范。 它面向 3D 计算机图形&#xff0c;硬件加速 3D 渲染和…...

基于 SpringBoot 2.7.x 使用最新的 Elasticsearch Java API Client 之 ElasticsearchClient

1. 从 RestHighLevelClient 到 ElasticsearchClient 从 Java Rest Client 7.15.0 版本开始&#xff0c;Elasticsearch 官方决定将 RestHighLevelClient 标记为废弃的&#xff0c;并推荐使用新的 Java API Client&#xff0c;即 ElasticsearchClient. 为什么要将 RestHighLevelC…...

辅助驾驶功能开发-功能对标篇(15)-NOA领航辅助系统-吉利

1.横向对标参数 厂商吉利车型FX11/EX11/DCY11/G636上市时间2022Q4方案6V5R+1DMS摄像头前视摄像头1*(8M)侧视摄像头/后视摄像头1环视摄像头4DMS摄像头1雷达毫米波雷达54D毫米波雷达/超声波雷达12激光雷达/域控供应商福瑞泰克辅助驾驶软件供应商福瑞泰克高精度地图百度芯片TDA4 T…...

javascript: Sorting Algorithms

// Sorting Algorithms int JavaScript https://www.geeksforgeeks.org/sorting-algorithms/ /** * file Sort.js * 1. Bubble Sort冒泡排序法 * param arry * param nszie */ function BubbleSort(arry, nszie) {var i, j, temp;var swapped;for (i 0; i < nszie - 1; i)…...

嵌入式Linux应用开发-驱动大全-同步与互斥④

嵌入式Linux应用开发-驱动大全-同步与互斥④ 第一章 同步与互斥④1.5 自旋锁spinlock的实现1.5.1 自旋锁的内核结构体1.5.2 spinlock在UP系统中的实现1.5.3 spinlock在SMP系统中的实现 1.6 信号量semaphore的实现1.6.1 semaphore的内核结构体1.6.2 down函数的实现1.6.3 up函数的…...

2023年【高压电工】证考试及高压电工复审模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 高压电工证考试根据新高压电工考试大纲要求&#xff0c;安全生产模拟考试一点通将高压电工模拟考试试题进行汇编&#xff0c;组成一套高压电工全真模拟考试试题&#xff0c;学员可通过高压电工复审模拟考试全真模拟&a…...

C/C++学习 -- 分组密算法(3DES算法)

1. 3DES算法概述 3DES&#xff08;Triple Data Encryption Standard&#xff09;&#xff0c;又称为TDEA&#xff08;Triple Data Encryption Algorithm&#xff09;&#xff0c;是一种对称加密算法&#xff0c;是DES&#xff08;Data Encryption Standard&#xff09;的加强版…...

C/C++面试题总结

1.new与malloc的区别 new操作符从自由存储区上为对象动态分配内存空间&#xff0c;而malloc函数从堆上动态分配内存。 使用new操作符申请内存分配时无须指定内存块的大小&#xff0c;而malloc则需要显式地指出所需内存的尺寸。 int *p new int; delete p;//一定要配对使用n…...

Java下正面解除警告Unchecked cast: ‘java.lang.Object‘ to ‘java.util.ArrayList‘

就是我在反序列化时&#xff0c;遇到这样一个警告&#xff1a; Unchecked cast: java.lang.Object to java.util.ArrayList<com.work1.Student>然后我去网上查&#xff0c;有些人说用SuppressWarnings(“unchecked”)去忽略警告&#xff0c;但是我觉得作为一名合格的程序…...

图像处理与计算机视觉--第四章-图像滤波与增强-第二部分

目录 1.图像噪声化处理与卷积平滑 2.图像傅里叶快速变换处理 3.图像腐蚀和膨胀处理 4 图像灰度调整处理 5.图像抖动处理算法 学习计算机视觉方向的几条经验: 1.学习计算机视觉一定不能操之过急&#xff0c;不然往往事倍功半&#xff01; 2.静下心来&#xff0c;理解每一个…...

[前端基础]typescript安装以及类型拓展

&#xff08;0&#xff09;写在前面&#xff1a; 作者之前都是在写js&#xff0c;所以这里介绍ts肯定是不能从头开始介绍了&#xff0c;主要在js的基础上介绍ts关于类型的几个特性&#xff0c;以及ts的安装还有配置问题 &#xff08;1&#xff09;ts和js是什么关系 通俗点来…...

网络参考资料汇总(1)

将这段时间参考的各路大佬的资料加以汇总分类&#xff1a; &#xff08;1&#xff09;FFmpeg: 基于FFmpeg进行rtsp推流及拉流&#xff08;详细教程&#xff09; Linux 编译安装 FFmpeg 步骤&#xff08;带ffplay&#xff09; Jetson 环境安装(三):jetson nano配置ffmpeg和ngin…...

Remove和RemoveLast用法

LeetCode 46 全排列 先贴代码 class Solution {List<List<Integer>> result new ArrayList<>();List<Integer> temp new ArrayList<>();public List<List<Integer>> permute(int[] nums) {dfs(nums, 0);return result;}public v…...

无刷电机S型与梯形加减速曲线实战:从算法到代码的平滑运动实现

1. 无刷电机加减速控制的核心价值 第一次调试无刷电机时&#xff0c;我盯着那个疯狂抖动的机械臂陷入了沉思——原来不加控制的电机就像脱缰的野马&#xff0c;根本没法用在精密设备上。后来才明白&#xff0c;加减速曲线就是驯服这匹野马的缰绳。无论是工厂里的机械臂&#x…...

基于MATLAB的图像加密解密系统 可以正确无误的对图像进行加密和解密 带GUI界面

基于MATLAB的图像加密解密系统 可以正确无误的对图像进行加密和解密 带GUI界面&#xff0c;一步一步完整运行你是否有过这样的疑问——如何让一张普通图片变成外星密文&#xff1f;在MATLAB里玩转图像加密真的可以像搭积木一样简单。今天咱们就来捣鼓一个带界面的图像加密系统&…...

Zynq AXI DMA实战:从零配置S_AXIS_S2MM到M_AXIS_MM2S的完整数据流(Vivado 2023版)

Zynq AXI DMA实战&#xff1a;从零配置S_AXIS_S2MM到M_AXIS_MM2S的完整数据流&#xff08;Vivado 2023版&#xff09; 在嵌入式系统开发中&#xff0c;高效的数据传输往往是性能瓶颈所在。Zynq系列SoC凭借其独特的ARM处理器与FPGA可编程逻辑的紧密结合&#xff0c;为高性能数据…...

如何让AI成为你的第二大脑?AnythingLLM浏览器扩展使用指南

如何让AI成为你的第二大脑&#xff1f;AnythingLLM浏览器扩展使用指南 【免费下载链接】anything-llm 这是一个全栈应用程序&#xff0c;可以将任何文档、资源&#xff08;如网址链接、音频、视频&#xff09;或内容片段转换为上下文&#xff0c;以便任何大语言模型&#xff08…...

【仅限前500名工程师】Python智能内存管理高阶训练营核心讲义:17个真实OOM案例、8种定制化GC策略、1份可审计内存SLA模板

第一章&#xff1a;Python智能体内存管理策略最佳实践Python智能体&#xff08;如基于LLM的Agent、ReAct架构或Tool-Calling系统&#xff09;在长期运行中易因对象滞留、缓存膨胀和闭包引用导致内存持续增长。高效内存管理不仅关乎稳定性&#xff0c;更直接影响推理延迟与并发吞…...

YOLO12与Qt结合:跨平台目标检测应用开发

YOLO12与Qt结合&#xff1a;跨平台目标检测应用开发 1. 引言 想象一下&#xff0c;你开发了一个优秀的目标检测模型&#xff0c;能够在各种场景下准确识别物体。但当你想要把它部署到不同设备上时&#xff0c;却遇到了麻烦&#xff1a;Windows、macOS、Linux各有各的兼容性问…...

HDF5文件可视化指南:用HDFView检查你的Python数据存储结果

HDF5文件可视化指南&#xff1a;用HDFView检查你的Python数据存储结果 当你用Python处理完一批数据并存入HDF5文件后&#xff0c;最让人忐忑的莫过于——数据真的按预期存储了吗&#xff1f;结构是否正确&#xff1f;数值有无异常&#xff1f;本文将带你用HDFView这款专业工具&…...

细胞转染优化方向(二):PEI体系关键参数进阶优化指南【曼博生物】

摘要&#xff1a;在PEI转染体系中&#xff0c;除基础培养条件外&#xff0c;质粒比例、DNA与PEI比率、孵育条件及病毒收获时间等参数同样显著影响转染效率与病毒产量。本文结合实验数据&#xff0c;对关键参数进行系统分析&#xff0c;为AAV及慢病毒生产提供优化思路。 关键词…...

ZLPhotoBrowser错误处理机制:构建稳定可靠的iOS图片选择器终极指南

ZLPhotoBrowser错误处理机制&#xff1a;构建稳定可靠的iOS图片选择器终极指南 【免费下载链接】ZLPhotoBrowser Wechat-like image picker. Support select photos, videos, gif and livePhoto. Support edit image and crop video. 微信样式的图片选择器&#xff0c;支持预览…...

从模型到应用:深入解析Source-Free Domain Adaptation(SFDA)的核心挑战与实战策略

1. 什么是Source-Free Domain Adaptation&#xff08;SFDA&#xff09;&#xff1f; 想象一下你是一个厨师&#xff0c;花了三年时间在四川学会了做正宗川菜。现在突然被派到广东工作&#xff0c;发现当地人对辣味的接受度完全不同。更麻烦的是&#xff0c;你不能带任何四川的食…...