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

【牛客】动态规划专题一:斐波那契数列

文章目录

  • DP1 斐波那契数列
    • 法1:递归
    • 法2:动态规划
    • 法3:优化空间复杂度
  • 2.分割连接字符串
  • 3. 给定一个字符串s和一组单词dict,在s中添加空格将s变成一个句子

DP1 斐波那契数列

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

法1:递归

// 递归
#include <iostream>
using namespace std;int Fibonacci(int n)
{if(n == 0) return 0;if(n == 1) return 1;return Fibonacci(n - 1) + Fibonacci(n - 2);
}
int main() {int a;while (cin >> a) { // 注意 while 处理多个 caseint b = Fibonacci(a);cout << b << endl;}
}

法2:动态规划

// DP
#include <iostream>
using namespace std;int Fibonacci(int n)
{//创建一个数组,保存中间状态的解int* F = new int[n + 1];//初始化F[0] = 0; F[1] = 1;//状态公式:F[i] = F[i - 1] + F[i - 2];for(int i = 2; i < n + 1; i++){F[i] = F[i - 1] + F[i - 2];}return F[n];
}
int main() {int a;while (cin >> a) { // 注意 while 处理多个 casecout << Fibonacci(a) << endl;}
}

法3:优化空间复杂度

#include <iostream>
using namespace std;int Fibonacci(int n)
{//状态公式:F[i] = F[i - 1] + F[i - 2];//优化空间复杂度 O(n) -> O(1)if(n == 0) return 0;if(n == 1) return 1;int fn = 0, f0 = 0, f1 = 1;for(int i = 2; i < n + 1; i++){fn = f0 + f1;//更新中间状态f0 = f1;f1 = fn;}return fn;
}
int main() {int a;while (cin >> a) { // 注意 while 处理多个 casecout << Fibonacci(a) << endl;}
}

在这里插入图片描述

2.分割连接字符串

1、给定一个字符串s和一组单词dict,判断s是否可以用空格分割成一个单词序列,使得单词序列中所有的单词都是dict中的单词(序列可以包含一个或多个单词)。

例如:
给定s=“leetcode”;
dict=[“leet”, “code”].
返回true,因为"leetcode"可以被分割成"leet code".

#include <vector>
#include <string>
#include <unordered_set>
using namespace std;bool wordBreak(string s, unordered_set<string>& dict) {// 检查输入是否有效if (s.empty() || dict.empty()) {return false;}// 动态规划数组,flag[i]表示s的前i个字符是否可以被拆分vector<bool> flag(s.length() + 1, false);flag[0] = true; // 空字符串可以被拆分// 遍历字符串的每个位置for (int i = 1; i <= s.length(); i++) {// 从i-1向前遍历到0for (int j = i - 1; j >= 0; j--) {// 如果前j个字符可以被拆分,且从j到i的子字符串在字典中if (flag[j] && dict.find(s.substr(j, i - j)) != dict.end()) {flag[i] = true;break; // 当前位置可以被拆分,跳出内层循环}}}// 返回整个字符串是否可以被拆分return flag[s.length()];
}

3. 给定一个字符串s和一组单词dict,在s中添加空格将s变成一个句子

这段代码实现了回溯法(深度优先搜索,DFS)来生成所有可能的单词拆分结果。
2、给定一个字符串s和一组单词dict,在s中添加空格将s变成一个句子,使得句子中的每一个单词都是dict中的单词

返回所有可能的结果

例如:给定的字符串s =“catsanddog”,

dict =[“cat”, “cats”, “and”, “sand”, “dog”].

返回的结果为[“cats and dog”, “cat sand dog”].

#include <vector>
#include <string>
#include <unordered_set>
using namespace std;class Solution {
public:vector<string> wordBreak(string s, unordered_set<string>& dict) {vector<string> result;DFS(s, dict, s.length(), "", result);return result;}private:void DFS(const string& s, const unordered_set<string>& dict, int index, string str, vector<string>& result) {// 如果索引小于等于0,说明已经处理完整个字符串if (index <= 0) {if (!str.empty()) {// 去掉最后一个多余的空格,并将结果加入到结果列表中result.push_back(str.substr(0, str.length() - 1));}return;}// 从当前索引向前遍历,寻找可以拆分的单词for (int i = index; i >= 0; i--) {// 检查从i到index的子字符串是否在字典中if (dict.find(s.substr(i, index - i)) != dict.end()) {// 将当前单词加入到路径中,并继续递归处理DFS(s, dict, i, s.substr(i, index - i) + " " + str, result);}}}
};

相关文章:

【牛客】动态规划专题一:斐波那契数列

文章目录 DP1 斐波那契数列法1&#xff1a;递归法2&#xff1a;动态规划法3&#xff1a;优化空间复杂度 2.分割连接字符串3. 给定一个字符串s和一组单词dict&#xff0c;在s中添加空格将s变成一个句子 DP1 斐波那契数列 法1&#xff1a;递归 // 递归 #include <iostream>…...

java8、9新特性

JAVA8 Lambda 表达式 (parameters) -> expression 或 (parameters) ->{ statements; } 提供了一种更为简洁的语法&#xff0c;尤其适用于函数式接口。相比于传统的匿名内部类&#xff0c;Lambda 表达式使得代码更为紧凑&#xff0c;减少了样板代码的编写。 它允许将函…...

作业:zuoye

1.闹钟&#xff08;错的&#xff09; #include "widget.h" #include "ui_widget.h" #include <QMessageBox>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);// 初始化定时器objTimer new QTimer(th…...

redis底层数据结构——链表

文章目录 定义内部实现总结 定义 链表提供了高效的节点重排能力&#xff0c;以及顺序性的节点访间方式&#xff0c;并且可以通过增删节点来灵活地调整链表的长度。 作为一种常用数据结构&#xff0c;链表内置在很多高级的编程语言里面&#xff0c;因为Redis使用的C语言并没有…...

问题解决 4S 法

在深入研读《像高手一样解决问题》的第二章后&#xff0c;犹如打开了一扇通往高效问题解决领域的新大门&#xff0c;其中所阐述的问题解决 4S 法&#xff0c;更是给人以拨云见日之感。 一、陈述&#xff08;State&#xff09;&#xff1a;明确问题本质 这是问题解决的起始点&…...

SQL-leetcode—1407. 排名靠前的旅行者

1407. 排名靠前的旅行者 表&#xff1a;Users ---------------------- | Column Name | Type | ---------------------- | id | int | | name | varchar | ---------------------- id 是该表中具有唯一值的列。 name 是用户名字。 表&#xff1a;Rides -------------------…...

机器学习(李宏毅)——Transformer

一、前言 本文章作为学习2023年《李宏毅机器学习课程》的笔记&#xff0c;感谢台湾大学李宏毅教授的课程&#xff0c;respect&#xff01;&#xff01;&#xff01; 读这篇文章必须先了解self-attention&#xff0c;可参阅我上一篇。 二、大纲 Transformer问世原理剖析模型训…...

React进阶之React状态管理CRA

React状态管理&CRA 状态管理理论讲解案例 context 上下文结合状态来维护todoListindex.jsApp.jsTaskList.jsTasksContext.jsAddTask.js Escape 脱围机制refforwardRef&#xff08;不建议使用&#xff09; CRA 状态管理 理论讲解 如何针对 effect -> 对action的触发 -&…...

攻克AWS认证机器学习工程师(AWS Certified Machine Learning Engineer) - 助理级别认证:我的成功路线图

引言 当我决定考取AWS认证机器学习工程师 - 助理(AWS Certified Machine Learning Engineer — Associate)级别证书时,我就预料到这将是一段充满挑战但回报颇丰的旅程。跟你说吧,它在这两方面都没让我失望。这项考试面向的是不仅理解机器学习原理,还对AWS生态系统有扎实基…...

前端开发环境

vscde nrm 切换源管理 nvm 切换node版本工具 nodemon node运行js文件热更新 pxcook 易用的自动标注工具, 生成前端代码, 设计研发协作利器,比PS轻量 TypeScript 安装tsc 它的作用就是将ts文件编译为js文件 npm i typescript -g 输入tsc -v能够看到东西&#xff0c;就说明好了 …...

Web自动化测试—测试用例流程设计

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、测试用例通用结构回顾 1.1、现有测试用例存在的问题 可维护性差可读性差稳定性差 1.2、用例结构设计 测试用例的编排测试用例的项目结构 1.3、自动化测试…...

HTML全局属性与Meta元信息详解:优化网页的灵魂

目录 前言 一、HTML中的全局属性 常用的全局属性 二、Meta元信息标签&#xff1a;网页背后的重要配置 常用的Meta标签 三、Meta元信息的进阶使用 总结 前言 在HTML开发中&#xff0c;有一些属性和标签是全局性的&#xff0c;能够影响网页的多个方面&#xff0c;比如页面的…...

day001 折半查找/二分查找

day001 折半查找/二分查找 适用场景顺序表或者顺序数组 时间复杂度&#xff1a;log2N 算法思路 pre: 下限为0&#xff0c;上限为数组长度-1&#xff0c; 下限小于等于上限进行循环 if 比较目标值和中间值&#xff0c;if 大于: 则下限中间值索引1else: 小于: 则上限中间值索…...

Linux 资源监控:优化与跟踪系统性能

在 Evoxt&#xff0c;我们深知有效的 Linux 资源监控对于优化服务器性能至关重要。本指南将介绍关键工具和策略&#xff0c;帮助您监控 CPU、内存、磁盘和网络使用情况&#xff0c;确保您的 Linux 系统始终保持高效运行。 实时系统监控 使用 top&#xff08;交互式系统监控&am…...

java安全中的类加载

java安全中的类加载 提前声明: 本文所涉及的内容仅供参考与教育目的&#xff0c;旨在普及网络安全相关知识。其内容不代表任何机构、组织或个人的权威建议&#xff0c;亦不构成具体的操作指南或法律依据。作者及发布平台对因使用本文信息直接或间接引发的任何风险、损失或法律纠…...

Node.js调用DeepSeek Api 实现本地智能聊天的简单应用

在人工智能快速发展的今天&#xff0c;如何快速构建一个智能对话应用成为了开发者们普遍关注的话题。本文将为大家介绍一个基于Node.js的命令行聊天应用&#xff0c;它通过调用硅基流动&#xff08;SiliconFlow&#xff09;的API接口&#xff0c;实现了与DeepSeek模型的智能对话…...

分布式服务框架 如何设计一个更合理的协议

1、概述 前面我们聊了如何设计一款分布式服务框架的问题&#xff0c;并且编码实现了一个简单的分布式服务框架 cheese, 目前 cheese 基本具备分布式服务框架的基本功能。后面我们又引入了缓存机制&#xff0c;以及使用Socket替代了最开始的 RestTemplate。并且还学习了网络相关…...

Unity使用iTextSharp导出PDF-02基础结构及设置中文字体

基础结构 1.创建一个Document对象 2.使用PdfWriter创建PDF文档 3.打开文档 4.添加内容&#xff0c;调用文档Add方法添加内容时&#xff0c;内容写入到输出流中 5.关闭文档 using UnityEngine; using iTextSharp.text; using System.IO; using iTextSharp.text.pdf; using Sys…...

Kafka因文件句柄数过多导致挂掉的排查与解决

一、问题现象 在k8s集群中部署了多个服务&#xff0c;包括Kafka、TDengine集群和Java等。这些服务使用NFS作为持久化存储方案。最近遇到了一个问题&#xff1a;Kafka频繁报错并最终挂掉。错误日志如下&#xff1a; 2025-02-09T09:39:07,022] INF0 [LogLoader partition__cons…...

【LeetCode Hot100 多维动态规划】最小路径和、最长回文子串、最长公共子序列、编辑距离

多维动态规划 机器人路径问题思路代码实现 最小路径和问题动态规划思路状态转移方程边界条件 代码实现 最长回文子串思路代码实现 最长公共子序列&#xff08;LCS&#xff09;题目描述解决方案 —— 动态规划1. 状态定义2. 状态转移方程3. 初始化4. 代码实现 编辑距离&#xff…...

PRC框架-Dubbo

RPC框架 RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;框架是一种允许客户端通过网络调用服务器端程序的技术。以下是常见的RPC框架及其特点&#xff1a; 1. 基于HTTP/REST的RPC框架 特点&#xff1a;简单易用&#xff0c;与Web开发无缝集成&am…...

智能检测摄像头模块在客流统计中的应用

工作原理 基于视频分析技术&#xff1a;智能检测摄像头模块通过捕捉监控区域内的视频画面&#xff0c;运用图像识别算法对视频中的人体进行检测、跟踪和分析。可以识别出人体的轮廓、姿态等特征&#xff0c;进而区分不同的个体&#xff0c;实现对客流的统计。 基于红外感应技…...

[LLM面试题] 指示微调(Prompt-tuning)与 Prefix-tuning区别

一、提示调整(Prompt Tuning) Prompt Tuning是一种通过改变输入提示语&#xff08;input prompt&#xff09;以获得更优模型效果的技术。举个例子&#xff0c;如果我们想将一条英语句子翻译成德语&#xff0c;可以采用多种不同的方式向模型提问&#xff0c;如下图所示&#xf…...

【CubeMX+STM32】SD卡 U盘文件系统 USB+FATFS

本篇&#xff0c;将使用CubeMXKeil, 创建一个 USBTF卡存储FatFS 的虚拟U盘读写工程。 目录 一、简述 二、CubeMX 配置 SDIO DMA FatFs USB 三、Keil 编辑代码 四、实验效果 串口助手&#xff0c;实现效果&#xff1a; U盘&#xff0c;识别效果&#xff1a; 一、简述 上…...

在JVM的栈(虚拟机栈)中,除了栈帧(Stack Frame)还有什么?

在JVM的栈&#xff08;虚拟机栈&#xff09;中&#xff0c;除了栈帧&#xff08;Stack Frame&#xff09;&#xff0c;还有其他一些与方法调用相关的重要信息。栈的主要作用是存储方法调用的执行过程中的上下文信息&#xff0c;栈帧是其中最关键的组成部分。 栈的组成 栈帧&am…...

# 解析Excel文件:处理Excel xlsx file not supported错误 [特殊字符]

解析Excel文件&#xff1a;处理Excel xlsx file not supported错误 &#x1f9e9; 嘿&#xff0c;数据分析的小伙伴们&#xff01;&#x1f44b; 我知道在处理Excel文件的时候&#xff0c;很多人可能会遇到这样一个错误&#xff1a;Excel xlsx file not supported。别担心&…...

图片下载不下来?即便点了另存为也无法下载?两种方法教你百分之百下载下来

前言&#xff0c;我要讲的是网站没有禁鼠标右键&#xff0c;可以右键&#xff0c;也可以打开控制台&#xff0c;图片也不用付费这种。 一、用鼠标按住图片直接往桌面拖动&#xff0c;也可以打开开发者工具&#xff0c;在里面往外拖。 二、这个方法很有意思&#xff0c;在电脑的…...

Unity项目实战-Player玩家控制脚本实现

玩家控制脚本设计思路 1. 代码演变过程 1.1 初始阶段&#xff1a;单一Player类实现 最初的设计可能是一个包含所有功能的Player类&#xff1a; public class Player : MonoBehaviour {private CharacterController controller;private Animator animator;[SerializeField] …...

CP AUTOSAR标准之ICUDriver(AUTOSAR_SWS_ICUDriver)(更新中……)

1 简介和功能概述 该规范指定了AUTOSAR基础软件模块ICU驱动程序的功能、API和配置。   ICU驱动程序是一个使用输入捕获单元(ICU)来解调PWM信号、计数脉冲、测量频率和占空比、生成简单中断和唤醒中断的模块。   ICU驱动程序提供服务 信号边缘通知控制唤醒中断周期信号时间测…...

Python3 ImportError: cannot import name ‘XXX‘ from ‘XXX‘

个人博客地址&#xff1a;Python3 ImportError: cannot import name XXX from XXX | 一张假钞的真实世界 例如如下错误&#xff1a; $ python3 git.py Traceback (most recent call last):File "git.py", line 1, in <module>from git import RepoFile &quo…...