当前位置: 首页 > 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;
}

http://www.lryc.cn/news/253030.html

相关文章:

  • js最大公约数的实现有哪些办法
  • 盘后股价狂飙16% — GitLab的DevOps产品在AI时代展现强劲财务业绩
  • unity UI特效遮罩
  • 编程模拟支付宝能量产生过程--数据控制流
  • SQL Sever 基础知识 - 数据筛选(1)
  • 2024 Move 中文开发者大会将于1月13–14日在上海举办
  • 基于PHP的在线日语学习平台
  • 解决element ui tree组件不产生横向滚动条
  • mysql的InnoDB存储引擎
  • MCU 的 TOP 15 图形GUI库:选择最适合你的图形用户界面(二)
  • 软件工程 单选多选补充 复刻
  • 微前端个人理解与简单总结
  • PC端企业微信hook协议开发,获取要群发的客户群id
  • RabbitMQ安装说明
  • scrapy的建模及管道的使用
  • Hadoop学习笔记(HDP)-Part.04 基础环境配置
  • 【Linux】进程控制--进程创建/进程终止/进程等待/进程程序替换/简易shell实现
  • 用pip更新、安装python的包
  • spring boot 事件机制
  • 分布式版本管理系统---->Git(Linux---centos(保姆式)讲解1)
  • B树你需要了解一下
  • MFC设置状态栏文本导致崩溃的原因
  • 配置typroa上传图片到gitee
  • java并发-线程生命周期
  • Javaweb之Vue路由的详细解析
  • 力扣:196. 删除重复的电子邮箱(Python3)
  • Ruby和HTTParty库下载代码示例
  • Unity 使用Horizontal Layout Group和Toggle制作多个水平开关按钮实现自动排列和单个点击放大后的自动排列。
  • Python实现FA萤火虫优化算法优化BP神经网络回归模型(BP神经网络回归算法)项目实战
  • 灯塔ARL-NPoC全面教程