zoukankan      html  css  js  c++  java
  • 随笔DP

    动态规划:

      看到动态规划时,就像看到贪心一样,总感觉动态规划是一种和其名字很像的算法,研究到现在,对其有些浅显的认识,确实是在动态中完成求解,如何动态、规划!这两点似乎不是很好理解;在求解的时候动态从何而来,规划从何而来?个人观点是,动态规划在于数组,是把已经求出的解,放进数组,至于如何去放需要自己摸索;动态规划一大特征:最优子结构;利用这一最优子结构构成递归方程(注:学习动态规划之前,一定要弄清楚递归。最好自己能用递归最几个回溯之类的题目),其实如果不考虑时间问题,递归会很方便的完成求解,正是由于TM time问题,我们不得不另寻捷径——动态规划;而这另寻的过程是将已经列出的递归方程,仔细研究,以至于最后找出一种方法替代递归,像common subsequnse

      当用递归去做的时候是

     

                  F(i-1,j-1)+1   if(x[i]==z[j])

        f(i,j)=

    ax(f(i-1,j),f(i,j-1))   if(x[i]!=z[j])

    上式就是递归方程,如何将其改进,这里是否看以看出,f(i,j)是取决于前三个式子的值,所以我们可以先从头开始计算,f(i,j)的值可以存在数组下,这样就不要重复计算了,直到i=x_len;j=z_len;友情提醒:递归转化成非递归是要用到循环滴!

    动态规划的难点在于最初的设计,在于对问题的分析;

    (补充)计数对于动态规划至关重要,其也是动态解法中的要点,分析问题时,要从如何记录数据——如何填充数组开始(往往带来惊喜),网上有个结论是:从上往下分析,从下网上计算(还不甚理解)

  • 相关阅读:
    第一节 2字符串 简单
    第一节 1C#基础 简单
    终于找到wamp修改密码方式了!
    js通过class name获得元素
    JavaScript中arguments
    对技术的态度
    C++的坑真的多吗?
    js 常用正则
    js利用Array.splice实现Array的insert/remove
    c# asp.net webform web页面打印,可以控制需要打印和不需要打印的位置
  • 原文地址:https://www.cnblogs.com/orangeblog/p/2153822.html
Copyright © 2011-2022 走看看