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

动态规划求解 fibonacci 数列

动态规划:

  • 动态规划的基本思想是:将原问题拆分为若干子问题,自底向上的求解。
  • 自底向上的求解,即是先计算子问题的解,再得出原问题的解。

思路:

  1. 创建一个数组,大小为n+1,用于存储斐波那契数列的值。数组的第i个元素对应斐波那契数列的第i项。

  2. 初始化数组的前两个元素,即F(0) = 0,F(1) = 1。

  3. 从i=2开始,迭代计算出第i项的值,即F(i) = F(i-1) + F(i-2)。这个值可以直接由数组中的前两个元素得到,所以不需要进行额外的函数调用。

  4. 循环结束后,数组中的最后一个元素就是斐波那契数列的第n项。

代码:

#include <iostream>
#include <vector>// 定义一个函数,使用动态规划求解斐波那契数列的第n项
int fibonacci_dp(int n) {// 处理基本情况:如果n为0或1,直接返回n,因为F(0)=0,F(1)=1if (n <= 1) {return n;}// 创建一个整型向量fib,大小为n+1,用以存储斐波那契数列的每一项std::vector<int> fib(n + 1);// 初始化斐波那契数列的前两项fib[0] = 0; // 第0项设置为0fib[1] = 1; // 第1项设置为1// 使用循环从第2项开始计算斐波那契数列,直到第n项for (int i = 2; i <= n; ++i) {// 根据斐波那契数列的定义,第i项是前两项之和fib[i] = fib[i - 1] + fib[i - 2];}// 循环结束后,fib[n]中存储的是斐波那契数列的第n项return fib[n];
}// 主函数
int main() {int n;// 提示用户输入要计算的斐波那契数列的项数nstd::cout << "Enter the value of n: ";std::cin >> n; // 读取用户输入的n// 调用fibonacci_dp函数计算第n项的斐波那契数,并将结果存储在result中int result = fibonacci_dp(n);// 输出计算得到的斐波那契数std::cout << "Fibonacci number is: " << result << std::endl;// 主函数返回0,表示程序正常结束return 0;
}

相关文章:

动态规划求解 fibonacci 数列

动态规划: 动态规划的基本思想是&#xff1a;将原问题拆分为若干子问题&#xff0c;自底向上的求解。是自底向上的求解&#xff0c;即是先计算子问题的解&#xff0c;再得出原问题的解。 思路: 创建一个数组&#xff0c;大小为n1&#xff0c;用于存储斐波那契数列的值。数组的…...

js最大公约数的实现有哪些办法

在JavaScript中&#xff0c;有几种常见的方法可以实现最大公约数&#xff08;GCD&#xff09;的计算。以下是其中一些方法&#xff1a; 辗转相除法&#xff08;欧几里德算法&#xff09;&#xff1a; 辗转相除法是一种基于递归的算法&#xff0c;用于计算两个数的最大公约数。它…...

盘后股价狂飙16% — GitLab的DevOps产品在AI时代展现强劲财务业绩

12月4日&#xff08;周一&#xff09;在美股收盘后&#xff0c;GitLab的股价狂飙16%&#xff01;人工智能驱动的DevOps产品继续凸显其平台能力的优势。 GitLab 12 月 4 日股价图 GitLab报告第三季度收入同比增长32%&#xff01;根据粗略统计&#xff0c;全球已经有接近1万家企…...

unity UI特效遮罩

using System.Collections; using System.Collections.Generic; using UnityEngine;/**UI特效遮罩 1.需要将ScrollRect 的遮罩Mask 换为 2D Mask2.将特效的Render里面的 Masking 设置为*/ public class UIParticleMaskControll : MonoBehaviour {// Start is called before …...

编程模拟支付宝能量产生过程--数据控制流

#模拟支付宝蚂蚁森林的能量产生过程 behavior_points { # 定义行为对应的积分"步行": 2,"生活缴费": 10,"线下支付": 5,"网络购票": 5,"共享单车": 10 }total_points 0 # 初始化总积分while True: # 开…...

SQL Sever 基础知识 - 数据筛选(1)

SQL Sever 基础知识 - 四、数据筛选 四、筛选数据第1节 DISTINCT - 去除重复值1.1 SELECT DISTINCT 子句简介1.2 SELECT DISTINCT 示例1.2.1 DISTINCT 一列示例1.2.2 DISTINCT 多列示例 1.2.3 DISTINCT 具有 null 值示例1.2.4 DISTINCT 与 GROUP BY 对比 第2节 WHERE - 过滤查询…...

2024 Move 中文开发者大会将于1月13–14日在上海举办

*以下文章来源于MoveFuns &#xff0c;作者MoveFunsDAO 2024 Move 中文开发者大会将于1月13日-1月14日在上海举办。本届 Move 开发者大会以 “Move 生态关键的一年” 为主题。 由 MoveFuns 、OpenBuild 和 MoveBit 主办&#xff0c;Rooch、AptosGlobal、alcove、zkMove 和 Ti…...

基于PHP的在线日语学习平台

有需要请加文章底部Q哦 可远程调试 PHP在线日语学习平台 一 介绍 此日语学习平台基于原生PHP开发&#xff0c;数据库mysql。系统角色分为用户和管理员。(附带参考设计文档) 技术栈&#xff1a;phpmysqlphpstudyvscode 二 功能 学生 1 注册/登录/注销 2 个人中心 3 查看课程…...

解决element ui tree组件不产生横向滚动条

结果是这样的 需要在tree的外层&#xff0c;包一个父组件 <div class"tree"><el-tree :data"treeData" show-checkbox default-expand-all></el-tree></div> 在css里面这样写,样式穿透按自己使用的css编译器以及框架要求就好 &l…...

mysql的InnoDB存储引擎

详情请参考&#xff1a;https://dev.mysql.com/doc/refman/8.0/en/innodb-storage-engine.html InnoDB 是一个通用目的的存储引擎&#xff0c;它在高可用性、高性能方面做了平衡。MySQL 8.0&#xff0c;InnoDB 是默认的存储引擎。在创建表的时候&#xff0c;如果没有使用ENGIN…...

MCU 的 TOP 15 图形GUI库:选择最适合你的图形用户界面(二)

在嵌入式系统开发中&#xff0c;选择一个合适的图形用户界面&#xff08;GUI&#xff09;库是至关重要的。在屏幕上显示的时候&#xff0c;使用现成的图形库&#xff0c;这样开发人员就不需要弄清楚底层任务&#xff0c;例如如何绘制像素、线条、形状&#xff0c;如果再高级一点…...

软件工程 单选多选补充 复刻

原文 软件的主要特性&#xff1a;无形、高成本、包括程序和文档 软件工程三要素&#xff1a;方法、工具、过程 螺旋模型包含风险分析 软件工程的主要目标&#xff1a;风险分析 面向对象开发&#xff1a;Booch、UML、Coad、OMT 软件危机的主要表现&#xff1a;软件成本太高…...

微前端个人理解与简单总结

最近一段时间在学习微前端&#xff0c;一开始是看各种博客了解微前端含义、对比多种微前端框架优劣&#xff0c;最后选择了qiankun、micro-app、wujie这三种微前端框架进行深入研究、对比。 微前端框架 推出时间 官方文档易读性 社区讨论活跃度 配置难度 Qiankun&#xff…...

PC端企业微信hook协议开发,获取要群发的客户群id

产品说明 一、 hook版本&#xff1a;企业微信hook接口是指将企业微信的功能封装成dll&#xff0c;并提供简易的接口给程序调用。通过hook技术&#xff0c;可以在不修改企业微信客户端源代码的情况下&#xff0c;实现对企业微信客户端的功能进行扩展和定制化。企业微信hook接口…...

RabbitMQ安装说明

注意: 本次安装以 CentOS 7为例 1、 准备软件 erlang 18.3 1.el7.centos.x86_64.rpm socat 1.7.3.2 5.el7.lux.x86_64.rpm rabbitmq server 3.6.5 1.noarch.rpm 2、安装Erlang rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm 3.、安装RabbitMQ 安装 rpm -ivh socat-1.7.3.2-…...

scrapy的建模及管道的使用

一、数据建模 通常在做项目的过程中&#xff0c;在items.py中进行数据建模 为什么建模 定义item即提前规划好哪些字段需要抓&#xff0c;防止手误&#xff0c;因为定义好之后&#xff0c;在运行过程中&#xff0c;系统会自动检查&#xff0c;配合注释一起可以清晰的知道要抓…...

Hadoop学习笔记(HDP)-Part.04 基础环境配置

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …...

【Linux】进程控制--进程创建/进程终止/进程等待/进程程序替换/简易shell实现

文章目录 一、进程创建1.fork函数2.fork函数返回值3.写时拷贝4.fork常规用法5.fork调用失败的原因 二、进程终止1.进程退出码2.进程退出场景3.进程常见退出方法 三、进程等待1.为什么要进行进程等待2.如何进行进程等待1.wait方法2.waitpid方法3.获取子进程status4.进程的阻塞等…...

用pip更新、安装python的包

查看pip的版本&#xff1a;python -m pip --version 例如&#xff0c;查看下pip的版本&#xff0c;在cmd下输入命令python -m pip --version&#xff0c;可以发现当前安装的pip的版本是23.2.1&#xff1a; 查看一个包的详情&#xff1a;python -m pip show 例如&#xff0c…...

spring boot 事件机制

目录 概述实践监听spring boot ready事件代码 源码初始化流程调用流程 结束 概述 spring boot 版本为 2.7.17 。 整体看一下spring及spring boot 相关事件。 根据下文所给的源码关键处&#xff0c;打上断点&#xff0c;可以进行快速调试。降低源码阅读难度。 实践 spring…...

基于Tauri与Rust构建跨平台Claude桌面客户端:架构设计与工程实践

1. 项目概述&#xff1a;一个为Claude设计的“圣杯”级桌面应用 如果你和我一样&#xff0c;在日常开发、写作或信息处理中重度依赖Anthropic的Claude模型&#xff0c;那么你肯定也经历过在浏览器标签页间反复横跳、复制粘贴、以及管理冗长对话历史的烦恼。 CoderLuii/HolyCla…...

基于LLM的MBTI人格模拟对话实验:从系统设计到工程实践

1. 项目概述&#xff1a;当MBTI遇上AI&#xff0c;一次关于人格的深度对话实验最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“Kali-Hac/ChatGPT-MBTI”。光看名字&#xff0c;你可能觉得这又是一个用ChatGPT玩MBTI性格测试的简单脚本。但当我真正clone下来&#xff0c;…...

基于Python与yfinance构建本地化股票量化筛选器:以PKScreener为例

1. 项目概述与核心价值 最近在和一些做量化交易的朋友交流时&#xff0c;发现大家普遍面临一个痛点&#xff1a;虽然市面上有各种股票数据接口和量化平台&#xff0c;但真正能快速、灵活地根据自定义条件进行股票筛选&#xff0c;并且能本地化部署、深度定制的工具却不多。要么…...

增量式编码器驱动开发实战:从原理到FPGA高速计数

1. 增量式编码器核心原理剖析 第一次接触增量式编码器时&#xff0c;我完全被它精妙的设计震撼到了。这种看似简单的装置&#xff0c;竟然能同时测量转速、转向和位置信息。拆开我们实验室的欧姆龙E6B2编码器&#xff0c;你会发现它的核心就是三个部分&#xff1a;发光二极管、…...

2026健康一体机生产厂家选型与厂商能力全景分析

2026健康一体机生产厂家选型与厂商能力全景分析健康一体机是一种集多项健康检测与管理功能于一体的智能终端设备&#xff0c;可快速完成身高、体重、血压、血糖、血氧、心率、心电、体温、BMI、脂肪含量、基础代谢率等基础体征测量。设备支持数据自动记录、建档、上传与智能分析…...

示波器平均值功能实战:从噪声中精准提取电机故障信号

1. 项目概述&#xff1a;用示波器诊断模型火车电机故障作为一名在电子工程领域摸爬滚打了十几年的老工程师&#xff0c;我手边最离不开的工具&#xff0c;除了万用表&#xff0c;就是示波器。很多人觉得示波器是研发实验室里的高端设备&#xff0c;离日常维修很远&#xff0c;但…...

AI 术语通俗词典:贝叶斯估计

贝叶斯估计是统计学、机器学习、概率推断和人工智能中非常重要的一个术语。它用来描述一种在已有认识的基础上&#xff0c;根据新数据更新参数判断的方法。换句话说&#xff0c;贝叶斯估计是在回答&#xff1a;我们原来对参数有一个初步判断&#xff0c;现在看到了一批数据&…...

AI意识与认知操控:技术伦理、风险与治理框架

1. 项目概述&#xff1a;当“意识”成为可编程对象最近几年&#xff0c;我身边不少从事AI研发的朋友&#xff0c;聊天时的话题已经从“模型精度又提升了几个点”逐渐转向了一些更“虚”但更根本的问题。比如&#xff0c;我们训练的大语言模型&#xff0c;在和我们进行几轮深度对…...

麻省理工博士生弃博投身数字人类研究:10年、100亿美元、5万台H100或可实现

【导语&#xff1a;麻省理工学院博士生Isaak Freeman放弃攻读博士学位&#xff0c;投身数字人类研究。他认为人类若保持碳基形态将在智力竞争中被AI淘汰&#xff0c;而将意识迁移到数字基质上是出路&#xff0c;并给出实现数字人类的粗略计算和路线图。】数字人类&#xff1a;从…...

N41 SRS与LTE共用XPXT开关的一些考虑

n41 SRS 与 LTE 共存冲突分析与工程设计指南 核心结论:在 n41 与 LTE 共用 XSPxT(DPDT / DP3T / DP4T)架构下,冲突是物理必然;硬件目标是将干扰压缩至软件可调度范围,系统稳定性最终取决于软件互斥策略。 一、问题本质:为什么 n41 SRS 会和 LTE 冲突? 1️⃣ n41 SRS 的…...