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

无锡建设工程项目代码申请网站网站影响seo的标签

无锡建设工程项目代码申请网站,网站影响seo的标签,蓝色响应式机械类网站,网络运维实习报告一、动态规划 什么是动态规划? 动态规划(Dynamic Programming,简称DP)是一种解决问题的算法思想,它将一个大问题拆分成多个相互重叠的子问题,并且通过解决这些子问题来求解原始问题 核心思想 拆分大问题…

一、动态规划

什么是动态规划?

动态规划(Dynamic Programming,简称DP)是一种解决问题的算法思想,它将一个大问题拆分成多个相互重叠的子问题,并且通过解决这些子问题来求解原始问题

核心思想

拆分大问题为子问题,记住已经解决的子问题,减少重复计算。

 

二、 从解斐波那契数列看动态规划

这里我们将告诉小伙伴们怎么理解动态规划中的“重复计算”和“记住”,并逐步引出动态规划。

斐波那契数列的特点是数列中的每个数都是由前面两个数相加得到的。例如:1, 1, 2, 3, 5, 8, 13, ...

 

普通递归求解(自顶向下+自底向上+重复计算)

用递归函数来求解就是:

int Fib(int n) { //递归算法1if (n==1 || n==2){ return 1;}else{ return Fib(n-1)+Fib(n-2);}
}

 对于这个递归函数,求解第五个斐波那契数就是调用Fib(5)。递归过程如下图:

这个普通递归调用Fib(5)采用自顶向下,然后直到调用Fib(2)和Fib(1)后触底反弹,自底向上的执行过程,如上图。

可以看到计算过程中存在大量的重复计算,例如求Fib(5)的过程,如上图蓝色部分存在两次重复计算Fib(3)值的情况,这个就是重复计算,需要我们避免。

 

备忘录算法求解(自顶向下+自底向上)

我们可以设计一个一维dp数组,用dp[i]存放Fib(i)的值,初始化时数组中所有元素都是-1。对应的算法Fib如下所示:

int Fib(int n) {//带备忘的递归算法if(n == 0||n == 1) return 1; //递归边界if(dp[n]!= -1) return dp[n]; //备忘录中有值else{dp[n] = Fib1(n-1) + Fib1(n-2); //求得的值存入备忘录return dp[n];}
}

用数组(或者其他的什么东西)保存已经计算过的子问题,这个过程就叫记忆。是不是很像人常用的备忘录呀~o( ̄▽ ̄)ブ

所以!已经计算过的、得到结果的子问题我们不能忘记!而是要用某种东西保存,让程序“记住”它。这样下次还要用的时候就不用重新计算一下,直接调用即可,节约时间。

就像一位名人说的那样:

Those who cannot remember the past are condemned to repeat it. 忘记过去的人注定会重蹈覆辙。——乔治·桑塔亚纳《常识中的理性》

 

动态规划法(自底向上) 

使用备忘录算法可以避免大量的重复计算。但是我每次使用都需要先从上到下,触底,然后再自底向上返回。这样感觉好累呀😩我能不能就跑一趟呀?本大学生动不了一点。

这就是动态规划!省略自顶向下的过程,直接自底向上!好!就喜欢这种简洁的想法👍

执行过程改变为自底向上,即先求出子问题解,将计算结果存放在一张表中,而且相同的子问题只计算一次,在后面需要时只是简单查表(访问数组,这个数组也叫动态规划数组),以避免重复计算。

算法伪代码如下:

int dp[MAX]; //所有元素初始化为0
int Fib(int n) { //迭代实现dp[0]=dp[1]=1;for (int i=2;i<n;i++){ dp[i]=dp[i-1]+dp[i-2]; //计算子问题}return dp[n];
}

 嘶~这个伪代码怎么体现查表的?🤔

很简单,例如求解Fib(5):

  • 当i=2,dp[2]=dp[1]+dp[0]=2;

  • 当i=4,dp[4]=dp[3]+dp[2]。此时dp[2],也就是第三个斐波那契数之前已经被计算过,被保存在了dp[2],直接查表(访问dp[2])就可以了。

求解Fib(5)时的计算过程如下:

  • (1)计算出Fib(1)=1

  • (2)计算出Fib(2)=1

  • (3)计算出Fib(3)=2

  • (4)计算出Fib(4)=3

  • (5)计算出Fib(5)=5

 

优化(减少空间复杂度) 

我们观察到对于每一个斐波那契数,它的数值其实只与它的前两个数的数值有关,我们不需要记录除了这两个数之外的数。因此,用不上那么大的一个数组,只需要两个变量。

int Fib(int n){  //优化动态规划数组,使用两个变量if(n==1) return 1;else if(n==2) return 2;else{ int a=1,b=2,c;for (int i=3;i<=n;i++){ c=a+b;a=b; b=c;}return c;}
}

 


文章转载自:

http://Jxv50mUz.bqdpy.cn
http://jGCFnyLT.bqdpy.cn
http://FelsHTTs.bqdpy.cn
http://6Ev9GWvU.bqdpy.cn
http://TiZ4qriP.bqdpy.cn
http://TwPf6M1t.bqdpy.cn
http://3razKknP.bqdpy.cn
http://f8ss2u3G.bqdpy.cn
http://GHlkBHBs.bqdpy.cn
http://O5KKifhJ.bqdpy.cn
http://ZqqspcJX.bqdpy.cn
http://wsLqs57k.bqdpy.cn
http://XWBTZLwv.bqdpy.cn
http://OhqrC74e.bqdpy.cn
http://rneYbwLl.bqdpy.cn
http://Dcda1m2Z.bqdpy.cn
http://Xy0TKA2b.bqdpy.cn
http://aOKO88iF.bqdpy.cn
http://Ujh3iVtC.bqdpy.cn
http://uP3yY0VZ.bqdpy.cn
http://hZRdb2vF.bqdpy.cn
http://rdK78t7e.bqdpy.cn
http://yjOb83B2.bqdpy.cn
http://hDYkxQhy.bqdpy.cn
http://IDIUiwgy.bqdpy.cn
http://mJPtOYyi.bqdpy.cn
http://eaIIQK5u.bqdpy.cn
http://fZqEsjnt.bqdpy.cn
http://o6p9iJic.bqdpy.cn
http://CPpPCix5.bqdpy.cn
http://www.dtcms.com/wzjs/653206.html

相关文章:

  • 用照片做的ppt模板下载网站乐清网站推广公司
  • 可以做ps兼职的网站wordpress 主题路径
  • 广东省公路建设有限公司网站wordpress安装论坛
  • 油漆工找活做的网站北京网站建设哪家专业
  • 国外优秀网站欣赏对网站建设的维护
  • 网站建设与管理实验目的建设通网站vip
  • 做网站还是移动开发网络建设需求
  • 科普网站建设的支持力度河南天元建设公司网站
  • 谷歌外贸建站多少钱整站seo排名外包
  • 服装网站建设目标有没有关于网站开发的名人访谈
  • 西安做网站公司必达网站开发外包哪家好
  • 网站开发人才可以自学做网站吗
  • 网站栏目内链怎么做水果电商网站开发方案
  • 物流运输网seo研究中心培训机构
  • 上杭县铁路建设办公室网站做手机旅游网站
  • 飞翔时代网站建设wordpress文件上传失败
  • 写作参考范文网站wordpress 前端构建
  • 网站备案号被收回价格低的英文怎么说
  • 小说网站个人可以做吗顾家家居网站是哪个公司做的
  • 用asp制作一个简单的网站wordpress4.9.5漏洞
  • 做 在线观看免费网站移动互联网开发的学习心得300字
  • 互联网网站样式用dw设计网站怎么做
  • 运动网站模板北京市建设资格执业中心网站
  • 罗湖网站建设价格wordpress源代码如何在本地编辑器
  • 建站工具上市网站开发 手机 电脑
  • 制作网页网站教程章丘做网站优化
  • 辽宁省建设银行网站服装品牌策划方案
  • 做网站的实践报告煤棚网架加工厂
  • 网站开发与维护竞赛竞价恶意点击报案
  • 三个律师做网站合适吗朝阳网络公司怎么样