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

php动态网站开发视频教程今日头条淄博新闻

php动态网站开发视频教程,今日头条淄博新闻,网页设计与网站开发方向,wordpress添加3d地图吗java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难,但它就是固定套路而已。其实动态规划只…
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846

很多人觉得动态规划很难,但它就是固定套路而已。其实动态规划只不过是将多余的步骤,提前放到dp数组中(就是一个数组,只不过大家都叫它dp),达到空间换时间的效果。它仅仅只是一种优化思路,因此它目前的境地和线性代数一样----虚假的难。

  1. 想想线性代数,在国外留学的学生大多数不觉得线性代数难理解。但是中国的学生学习线性代数时,完全摸不着头脑,一上来就是行列式和矩阵,根本不知道这玩意是干嘛的。
  2. 线性代数从根本上是在空间上研究向量,抽象上研究线性关系的学科。人家国外的教科书都是第一讲就帮助大家理解研究向量和线性关系。
  3. 反观国内的教材,直接把行列式搞到第一章。搞的国内的学生在学习线性代数的时候,只会觉得一知半解,觉得麻烦,完全不知道这玩意学来干什么。当苦尽甘来终于理解线性代数时干什么的时候,发现人家国外的教材第一节就把这玩意讲清楚了。你只会大骂我们国内这些教材,什么狗东西(以上是自己学完线性代数后的吐槽,我们同学无一例外都这么觉得)。

而我想告诉你,动态规划和线性代数一样,我学完了才知道,它不过就是研究空间换时间,提前将固定的重复操作规划到dp数组中,而不用暴力求解,从而让效率极大提升。

  1. 但是网上教动态规划的兄弟们,你直接给一个动态方程是怎么回事?和线性代数,一上来就教行列式和矩阵一样,纯属恶心人。我差不多做了30多道动态规划题目,才理解,动态方程只是一个步骤而已,而这已经浪费我很长时间了,我每道题都一知半解不理解,过程及其痛苦。最后只能重新做。
  2. 动态规划,一定是优先考虑重复操作与dp数组之间的关系,搞清楚后,再提出动态方程。而你们前面步骤省略了不讲,一上来给个方程,不是纯属扯淡吗?
  3. 我推荐研究动态规划题目,按5个步骤,从上到下依次来分析
  1. DP数组及下标含义
  2. 递推公式
  3. dp数组初始化
  4. 数组遍历顺序(双重循环及以上时,才考虑)
  5. dp数组打印,分析思路是否正确(相当于做完题,检查一下)

在这里插入图片描述

什么是斐波那契数列?
  1. 斐波那契数列:第一个值是0,第二个值是1,剩下的元素是它前两个元素和,例如:0 1 1 2 3 5… , 可见除了最开始的两个固定为0和1外,其余每一个元素都是前两个元素的和。
  2. 也就是说,这玩意一看就是固定的一套值,如果每次都重新生成,就太暴力了。
  3. 动态规划的思想就是,将生成的过程,就生成一次,之后再用,直接从dp数组中拿。从而大大提升效率
解题思路
  1. 暴力求解的思想,就是定义3个或者2个变量,然后累加,以获得指定位置的斐波那契数。每次都需要从头开始累加
  2. 但是如果我们预先将其存储到dp数组,就可以直接通过dp[x], 获取dp数组中指定位置x的对应斐波那契数,而不用每次都从头计算。
动态规划思考5步曲
  1. DP数组及下标含义

DP数组存储斐波那契数列,这个数列是一维线性的,所以只需一维数组存储。下标代表斐波那契数的位置。dp[0] = 0,dp[1] = 1是头两个固定值,dp[2]开始,每个元素是前两个数组元素的和。即可生成对应斐波那契数列的dp数组。

  1. 递推公式

既然知道了DP数组就是存储的斐波那契数列,那么递推公式,很显然就是当前元素=前两个元素的和。F(n) = F(n-1)+F(n-2)。 而且F(0) = 0,F(1)=1,这是斐波那契数列的特性,前两个值固定为0和1.

  1. dp数组初始化

在这里插入图片描述

  1. 数组遍历顺序(因为斐波那契数列是一维的,只需要一重循环,无需考虑这个)
  2. 打印dp数组(自己生成dp数组后,将dp数组输出看看,是否和自己预想的一样。)

在这里插入图片描述

代码

在这里插入图片描述

class Solution {public int fib(int n) {int length = n>=1?n:1;//避免n给的太小,例如n = 0时,dp[1] = 1;这条代码会下标越界//初始化DP数组,一维数组即可,头两个元素固定为0和1int dp[] = new int[length+1]; dp[0] = 0; dp[1] = 1;//其余元素为它的前两个元素的和for(int i = 2;i<=n ; i++){dp[i] = dp[i-1]+dp[i-2];}return dp[n];}
}
http://www.hengruixuexiao.com/news/28391.html

相关文章:

  • thinkphp做中英文网站搜索引擎优化文献
  • 做网站对服务器什么要求高百度指数官方网站
  • 做婚礼设计在哪个网站下载素材网站是怎么做出来的
  • 互动创意网站网络营销策划
  • 手机网站 o2o网络广告推广平台
  • 保定专业做网站公司站长工具天美传媒
  • 做百度网站接到多少客户电话培训机构查询网
  • 网站服务器在本地是指南阳网站优化公司
  • 怎么查网站是不是诈骗百度地图导航手机版免费下载
  • 那些是flash做的网站seo企业顾问
  • 安徽安庆怎么样优化设计英语
  • 建设学校网站论文游戏搜索风云榜
  • 太仓网站设计早晨设计搜索优化师
  • 什么网站ppt做的好宁波优化网页基本流程
  • logo接单平台seo诊断的网络问题
  • 网页制作成都seo网站推广什么意思
  • 做网站宁波有什么的网络公司全网营销推广服务
  • 永久免费的网站哪个好微信软文推广怎么做
  • 目前做网站需要什么cms网站排名优化专业定制
  • 通过门户网站做单点登录SAP短视频seo推广隐迅推专业
  • 企业产品网站模板口碑营销的特点
  • 惠州高端网站建设网站点击排名优化
  • 郑州公司网站苏州seo排名优化课程
  • 金融网站建设成功案例有哪些网络营销公司
  • 政府网站建设进程乔拓云智能建站官网
  • 北京网站建设哪家公司好护肤品推广软文
  • 建网站安全今日财经新闻
  • 电商网站的支付模块怎么做今日最新新闻摘抄
  • 苏州网站制作及推广品牌全网推广
  • 本地电脑做视频网站 外网连接代写新闻稿